Macos 这些$path从哪里来?

Macos 这些$path从哪里来?,macos,shell,prezto,Macos,Shell,Prezto,如果重要的话,我的设置是OSX上带有Prezto的Zshell。我有一个我不需要的Heroku路径。几年前,我记得参加过Heroku教程。我不确定它是在哪里指定的。我还想知道这些rvm路径是否应该在顶部。echo$PATH的一些输出来自my.zhsrc文件。我不确定它的其他部分来自哪里 echo "${PATH//:/'\n'}" /usr/local/heroku/bin' '/Users/joe/.rvm/gems/ruby-2.2.0/bin' '/Users/joe/.rvm/gems/

如果重要的话,我的设置是OSX上带有Prezto的Zshell。我有一个我不需要的Heroku路径。几年前,我记得参加过Heroku教程。我不确定它是在哪里指定的。我还想知道这些rvm路径是否应该在顶部。
echo$PATH
的一些输出来自my.zhsrc文件。我不确定它的其他部分来自哪里

echo "${PATH//:/'\n'}"
/usr/local/heroku/bin'
'/Users/joe/.rvm/gems/ruby-2.2.0/bin'
'/Users/joe/.rvm/gems/ruby-2.2.0@global/bin'
'/Users/joe/.rvm/rubies/ruby-2.2.0/bin'
'/usr/local/bin'
'/usr/bin'
'/bin'
'/usr/sbin'
'/sbin'
'~/.composer/vendor/bin'
'/opt/X11/bin'
'/usr/local/MacGPG2/bin'
'/usr/local/bin'
'/usr/local/sbin'
'/usr/local/bin/node'
'/Users/joe/Library/wpcs/vendor/squizlabs/php_codesniffer/scripts'
'~/.composer/vendor/bin'
'/Users/joe/.rvm/bin
$cat/etc/path
返回:

/usr/bin
/bin
/usr/sbin
/sbin
~/.composer/vendor/bin

有很多地方可以找。我建议:

grep PATH etc/zshenv
grep PATH ~/.zshenv   
grep PATH etc/zprofile 
grep PATH ~/.zprofile   
grep PATH etc/zshrc    
grep PATH ~/.zshrc      
grep PATH etc/zlogin   
grep PATH ~/.zlogin

设置并导出一个打印正在执行的文件名和行号的
PS4
,然后运行
PATH=/usr/local/bin:/usr/bin:/bin zsh-l-i-x
,以运行一个交互式登录shell,在每个命令(然后是扩展后的命令)到stderr之前打印
PS4
。将该标准捕获到一个文件中,在该文件中搜索您不想要/期望的条目,您就在这里。谢谢您,查尔斯,但您的建议超出了我的理解范围。我了解到PS4与调试有关。这个命令给我一些输出
PS4=;set-x;PATH=/usr/local/bin:/usr/bin:/bin zsh-l-i-x
我没有将stderr捕获到文件中。我确实找到了来自
.zlogin
的rvm和heroku路径,您需要在PS4中输入一个值,指定要记录的内容。将其设置为空字符串是无用的。这就是说,虽然我可以立即为bash指定一个好的PS4值,但zsh已经超出了我的控制范围。(十多年前曾使用过它,在我看到针对POSIX Shell的脚本编写变得如此草率之后,我发誓再也不会使用它了)。由于OP使用的是诸如rvm之类的工具,因此肯定有脚本包含在那些修改路径本身的点文件中,这意味着需要检查的不仅仅是这些文件,但是他们提供/包括的一切。更容易记录实际执行情况,从而确保获得所有信息。