logo科技微讯

关于 macOS 的 PATH

作者:科技微讯
日期:2023-05-16
📝 笔记

这篇文章是关于 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。

  • Catalina 之前:系统默认使用 bash,所以 PATH 在 ~/.bashrc~/.bash_profile
  • Catalina 及之后:系统默认使用 zsh,所以 PATH 在 ~/.zshrc~/.zprofile

其中 ~/.zprofile~/.zshrc 的区别如下,图表来自 Google Bard:

zsh-compare

如果你的 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 文件中。


donation赞赏
thumbsup0
thumbsdown0
暂无评论