为什么Mac source ~/.bash_profile只生效一次(macOS Catalina)

25 篇文章 1 订阅
5 篇文章 0 订阅

Mac环境变量的设置

开发中对环境变量的修改和增加比较普遍,此处做为记录也供大家参考。
一般mac电脑配置环境变量的方法(本文主要说明macOS Catalina的配置问题)

sudo vi ~/.bash_profile

按回车输入密码后用vi打开用户目录下的.bash_profile。
添加需要的变量(这里配置android tools的环境变量):

export Android_sdk=/Users/eagle/Library/Android/sdk;
export PATH=${PATH}:${Android_sdk}/platform-tools

这里说明一下,环境变量的规则是以英文冒号":"分隔。按 esc 后 :wq退出编辑,使之立刻生效需要 执行

source ~/.bash_profile 

开始输入我们期望的命令 adb shell,正常。
但是,另外一个终端始终无效,或关闭该终端再打开也无效

zsh:command not found:adb

每次都要执行source ~/.bash_profile才有效

如果您的系统也是macOS Catalina,可以继续往下看。
重开终端,再次查看.bash_profile,内容是正确的,再次执行source ~/.bash_profile 之后 adb shell又正常了,这样也太麻烦了,这个问题需要解决:

解决方法(任选一种即可)

一. 环境变量添加到.zshrc

  1. 打开或创建.zshrc
sudo vi ~/.zshrc
  1. 输入和.bash_profile相同的内容
export Android_sdk=/Users/eagle/Library/Android/sdk;
export PATH=${PATH}:${Android_sdk}/platform-tools
  1. 保存退出,执行下面命令立即生效
source ~/.bash_profile 

接着执行我们的命令,好的,大功告成。

二 .zshrc中 添加source ~/.bash_profile

  1. 打开或创建.zshrc
sudo vi ~/.zshrc
  1. 添加内容 source ~/.bash_profile 到.zshrc 中

  2. 保存退出,执行下面命令立即生效

source ~/.zshrc 

三 切换mac的shell

设置了 .bash_profile的情况下,把shell从zsh 切换为bash,这样不用每次都source .bash_profile。

chsh -s /bin/bash

要切回zsh的话执行:

chsh -s /bin/zsh

是什么原因

来自Apple官网的说明:点这里查看更多

从 macOS Catalina 版开始,您的 Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell。您还可以在较低版本的 macOS 中将 zsh 设置为默认 Shell。
默认情况下,您的 Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器:
从 macOS Catalina 版开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。
bash 是 macOS Mojave 及更低版本中的默认 Shell。
zsh 与 Bourne Shell (sh) 高度兼容,并且与 bash 基本兼容,但存在一些差别。要进一步了解 zsh 及其全面的命令行完成系统,请在“终端”中输入 man zsh。

也就是说zsh的命令行读取的path不是从.bash_profile里面读取的,而是从.zshrc配置文件里面读取。所以上面几种办法都是基于这个原因。

关于mac环境变量加载顺序,可参考这里

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值