这篇文章是关于 macOS 的 PATH 都位于哪些文件中,以及如何设置 PATH。
PATH 的作用是当我在终端输入一个命令时,告诉系统应该从哪里寻找这个命令。如果没有 PATH,那我们就需要输入命令的完整路径,有了 PATH,我们只需要输入命令的名称即可,系统会从 PATH 搜索这个命令的具体位置。
首先看看都有哪些 PATH。
echo $PATH
$PATH
是一个变量,这个命令会列出所有当前用户可以使用的 PATH,列出的顺序似乎反映了当你执行一个命令时,会依次从哪个 PATH 搜索这个命令。
那 $PATH
这个变量的值是怎么得来的呢?换言之,PATH 是在哪里被定义的呢?
对于系统级别的 PATH,是通过 /etc/paths
这个文件定义的。
cat /etc/paths
这个命令会列出系统级别的 PATH,所有用户都可以使用。
我的电脑会返回:
/usr/local/bin
/System/Cryptexes/App/usr/bin
/usr/bin
/bin
/usr/sbin
/sbin
其中 /usr/bin
不允许手动修改,要改就改 /usr/local/bin
。例如添加 vscode 的 code
命令,就是添加到 /usr/local/bin
。
除了 /etc/paths
这个文件,你还可以在 .bashrc
、.bash_profile
、.zshrc
、.zprofile
这四个文件中找到 PATH,这四个文件到位于 ~
路径中,由此也可以推断这些文件定义的 PATH 都是用户级别的 PATH。
~/.bashrc
、~/.bash_profile
;~/.zshrc
、~/.zprofile
;其中 ~/.zprofile
和 ~/.zshrc
的区别如下,图表来自 Google Bard:
如果你的 macOS 安装了 Homebrew,你应该会在 ~/.zprofile
而不是 ~/.zshrc
看到 Homebrew 的 PATH。
如果要临时添加一个 PATH,只需要在终端输入:
export PATH=$PATH:/path/to/directory
这条命令的格式初看起来有点奇怪,其实不然:export PATH
表示导出一个变量,这个变量的值是 $PATH:/path/to/directory
,:
是不同 PATH 之间的分隔符,你可以从 echo $PATH
确认这一点,所以上面这条命令的意思是 export
新的 PATH 变量,其值是在之前的 PATH 基础上添加 /path/to/directory
。
如果希望永久添加一个 PATH,可以把上面这行内容添加到 ~/.zshrc
或 ~/.zprofile
文件中。
env
查看所有变量,包括 $PATH
;