macOS 版本:10.14 Mojave

把常用程序所在的路径添加到 $PATH 环境变量,在 Shell 中运行程序时无需给出全路径,会自动在 $PATH 中设置的路径下找到程序

要查看当前 $PATH 的内容:

echo $PATH

以下是设置 $PATH 的几个方法

系统层面

/etc/paths 文件

内容如下,一行一个目录

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

/etc/paths.d/ 目录

这个目录下可能有多个文件,每个文件都分别对 $PATH 进行设置。这些文件一般是应用程序安装时添加,卸载时移除也比较方便。

用户层面

~/.profile

这个文件在用户目录下默认不存在,需要自行创建。

格式如下,使用 : 连接要添加的目录,之后的配置文件方法与此相同。

export PATH=$PATH:/path1:/path2

bash

macOS 的 Terminal 默认使用的是 bash

各种文档里 bash 的配置文件提到很多,主要有 .bash_profile.bashrc

.bash_profile vs .bashrc

Mac OS X — an exception

An exception to the terminal window guidelines is Mac OS X’s Terminal.app, which runs a login shell by default for each new terminal window, calling .bash_profile instead of .bashrc. Other GUI terminal emulators may do the same, but most tend not to.

也就是说 macOS 的 bash 默认使用的是 .bash_profile

有些程序安装时会把路径默认添加到 .bash_profile ,这并不是一个很好的做法,因为大家很可能会换用别的 Shell

如果只用 bash,在这里设置 $PATH 也没问题

如果设置了 ~/.profile ,可以这样引用

source ~/.profile

zsh

用 iTerm2 + Oh My Zsh 替代 macOS 默认的 Terminal + bash 是常见操作

zsh 似乎 ~/.zshrc~/.zprofile 两个配置文件同时有效。漏看一个,害我不知道哪里多出来一个路径,一通好找。(,

说似乎是因为不是刚刚安装好的状态,最初怎么样不知道了。

macOS 设置 $PATH 大致这么几个常见去处。

macOS 系统不同版本还有其它设置方法,一些在新版本已经不再支持,所以要注意系统版本。

读 bash 和 zsh 文档,涉及到的其它配置文件也还有,历史遗留问题,不纠结。

绕了一圈比较清楚的做法是在 ~/.profile 里设置 $PATH ,在 Shell 的配置文件里引用,如果需要切换会比较方便。