我想了解在 Linux/Mac 中设置 PATH 变量的方式。所有文件都加载了什么以及按什么顺序设置 BASH 的 PATH 变量。
答案1
PATH 可能有点棘手,因为您的配置文件可以执行类似PATH="~/bin:${PATH}"
或的操作PATH="${PATH}:~/bin"
,并且两者都完全可以接受并且具有有效的情境用途。我相信您真正想问的是 shell 在启动时读取哪些配置文件 - 确定如何分配 PATH 是按顺序浏览配置文件并查看它们的作用的功能。
在 OS X 上,按以下顺序读取以下配置文件:
对于交互式登录 shell:
* * 首先按以下/etc/profile
顺序匹配:~/.bash_profile
,, * 在 shell 终止时:~/.bash_login
~/.profile
~/.bash_logout
对于交互式非登录 shell:
* /private/etc/bashrc
(通常/etc/bash.bashrc
在 Linux 中)
*~/.bashrc
答案2
详细说明一下 devnall 对交互式 shell 的解释:WRT OS X 10.10 (Yosemite) 以及更早的版本,如果该文件可用且可执行, /etc/profile
则会调用。将读取每个文件并附加内容(每个内容应为一行),然后导出整个结果。这是一种简洁明了的方式来表明设置特定路径的原因:/usr/libexec/path_helper
path_helper
/etc/paths.d/
$PATH
$ cat /etc/paths.d/40-XQuartz
/opt/X11/bin
$ cat /etc/paths.d/MacGPG2
/usr/local/MacGPG2/bin
然后,如果有/etc/bashrc
,则会调用。
然后,将运行主目录中的 .bash_profile、.bash_login 或 .profile 之一。(当然,~/.bash_logout
退出时也会运行。)