我知道这个问题有点重复,但我认为我的问题与我在这里发现的其他问题有点不同。
如果我回显 $PATH,我可以看到包含多条路径的常见字符串。好的。但我找不到它们真正写在哪里(至少不是全部):
在/私人/等/个人资料:
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
/private/etc/paths:(从回显中我可以看到一些但不是全部!!!)
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
的〜/ .bash_profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
~/.bashrc
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
而我目前没有任何 ~/.profile 文件。
我根本不是 Unix 专家。我无法理解所有路径从何而来,因此添加或修改的最佳位置在哪里。
您能给我建议吗?:)
答案1
来源掌握 MacOSX 的 path_helper 实用程序
旨在简化路径管理,
path_helper
Leopard 中引入的新工具可帮助管理PATH
环境变量,但可能并未受到应有的欢迎,特别是因为它没有很好的文档记录。我们尝试对这个鲜为人知的工具进行一些介绍。path_helper 位于
/usr/libexec
。就其本身而言,此工具是无害的,因为它不会更改您环境中的任何内容,它只是一个bash
或csh
命令生成器,用于根据位于 的一些文本文件 构建PATH
和 环境变量。所以,试试吧!MANPATH
/etc
超过一千个字,让我们运行它:
$ /usr/libexec/path_helper
PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/apache-maven/apache-maven-2.0.9/bin"; export PATH
MANPATH="/usr/share/man:/usr/local/share/man:/usr/X11/man"; export MANPATH
它输出的命令不会被执行,除非你在 中调用相同的命令,
eval
就像在 中所做的那样/etc/profile
,这是 shell 的默认启动脚本bash
:
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
但是,它如何构建这些路径?
- 该
path_helper
实用程序读取目录中文件的内容/etc/paths.d
,/etc/manpaths.d
并将其内容分别附加到PATH
和MANPATH
环境变量。- 这些目录中的文件每行应包含一个路径元素。
在您的示例中,/private/etc/profile
您有:
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
查看/etc/paths.d
从该文件添加了哪些路径元素。
更多信息请参阅手册页