在Mac上设置环境变量并永久生效的方法

原由

我使用Go来开发程序,安装govendor之后发现命令行中执行govendor无效,需要将govendor所在的路径添加到PATH环境变量中。我的软件环境是iTerm2+zsh。

Mac中的环境变量介绍

Mac系统的环境变量,加载顺序为:

/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

当然/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量。后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。~/.bashrc没有上述规则,它是bash shell打开的时候载入的。

 

全局设置,一般不建议修改/etc/profile和/etc/bashrc 文件,而去修改/etc/paths文件。如果想要对所有用户都生效,则可在/etc/paths文件的最后一行加上自己的app路径。优先级也是最高的。

单个用户生效的配置,一般都是修改~/.bash_profile文件,若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!

如果没特殊说明,设置PATH的语法都为:

export PATH=<PATH 1>:<PATH 2>:<PATH 3>:.....:<PATH N>:$PATH

推荐设置用户个人自己的环境变量,尽量不破坏Mac系统全局变量

注意:Linux 里面是.bashrc,而Mac是.bash_profile

操作实录

vim ~/.bash_profile

添加下面的一行

export PATH=/Users/tao/go/bin:$PATH

使用下面的命令使之生效

source ~/.bash_profile

查看是否生效

echo $PATH

 

由上图可见,我在命令行执行govendor -h已经可以正常显示结果了。

需要注意的是,上面的设置默认使用bash,如果你在Mac上使用的是zsh等shell工具,需要再做如下配置,来达到环境变量设置的永久生效。

vim ~/.zshrc
在开头添加
if [ -f ~/.bash_profile ]; then
   source ~/.bash_profile
fi
使用下面的命令使之立即生效
source ~/.zshrc

原因解释如下:
bash的配置文件是.bashrc, zsh的配置文件是.zshrc,当你使用zsh作为默认shell工具的时候,它启动时并不会加载bash的这两个配置文件.bashrc和.bash_profile,而只会
加载自己的配置文件.zshrc,为了让我们的配置文件生效,只能在.zshrc中添加上面的配置。

如果不做上述设置,你就会发现,只有当你每次source ~/.bash_profile后才会生效,下次重新打开zsh窗口,还是不生效。

参考文献

[1].https://superuser.com/questions/866683/iterm-zsh-not-reading-bashrc-or-bash-profile

### 如何在 Mac OS 中配置和设置环境变量 #### 设置环境变量方法macOS 中,可以通过多种方法设置环境变量。这些方法适用于不同的场景以及需求。 1. **临时设置环境变量** 可以通过终端命令行直接设置环境变量,这种设置仅限于当前会话有效,在关闭终端后失效。 ```bash export OPENAI_API_KEY="your_api_key_here" echo $OPENAI_API_KEY # 查看是否成功设置 ``` 2. **永久设置环境变量** 若要使环境变量永久生效,则需将其写入特定的配置文件中。以下是几种常见的配置文件及其作用范围: - `.zshrc` 或 `.bash_profile` 文件 (针对 Zsh 和 Bash Shell)[^1]: 编辑用户的 shell 配置文件可以实现每次启动终端时自动加载自定义环境变量。 ```bash nano ~/.zshrc # 如果使用的是 Zsh ``` 添加如下内容: ```bash export OPENAI_API_KEY="your_api_key_here" ``` 保存退出编辑器后运行以下命令使其立即生效: ```bash source ~/.zshrc ``` 3. **系统级别的环境变量** 对于需要在整个系统范围内应用的环境变量,可修改 `/etc/launchd.conf` 文件[^4]。然而需要注意的是,现代版本的 macOS 已经不再支持这种方式,推荐改用 `~/.zprofile` 来替代。 在 `~/.zprofile` 文件中添加类似下面的内容即可完成全局设定: ```bash export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home" ``` 4. **图形界面下的高级选项** 用户也可以借助 GUI 的手段进入“系统偏好设置 -> 安全性与隐私”,虽然这种方法较少见用于调整环境变量,但在某些特殊场合下可能需要用到。 #### 查询已有的环境变量 为了验证或者调试目的,有时我们需要检查现有的环境变量列表。这可通过 Python 脚本轻松达成: ```python import os print(os.environ) # 输出所有的环境变量字典形式 ``` 上述代码片段能够打印出当前进程所继承的所有环境变量信息[^5]。 #### 注意事项 当涉及敏感数据比如 API 密钥之类的环境变量时,请务必小心保护好它们的安全性,避免泄露给未经授权的人士访问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值