Path 设置zsh路径未生成所需订单

Path 设置zsh路径未生成所需订单,path,zsh,homebrew,zshrc,Path,Zsh,Homebrew,Zshrc,我正在Mac OS X 10.8.3上使用自制软件。Homebrew希望路径中的/usr/local/bin目录早于/usr/bin,否则将使用系统提供的程序代替Homebrew管理的替换 我使用的是zsh,在我的.zshenv中,我重置了路径,然后使用PATH\u helper对其进行初始化,如下所示: if [ -x /usr/libexec/path_helper ]; then PATH='' eval `/usr/libexec/path_helper -s` fi 紧接着,

我正在Mac OS X 10.8.3上使用自制软件。Homebrew希望路径中的
/usr/local/bin
目录早于
/usr/bin
,否则将使用系统提供的程序代替Homebrew管理的替换

我使用的是zsh,在我的
.zshenv
中,我重置了路径,然后使用PATH\u helper对其进行初始化,如下所示:

if [ -x /usr/libexec/path_helper ]; then
  PATH=''
  eval `/usr/libexec/path_helper -s`
fi
紧接着,在
.zshenv
中,我向路径添加了
/usr/local/bin

export PATH="/usr/local/bin:$PATH"
typeset -U PATH 
$PATH中还添加了各种其他内容。RVM,
/usr/local/sbin
和我的个人
bin
目录:

export PATH=$HOME/.rvm/bin :$PATH
...
export PATH=$PATH:/usr/local/sbin:$HOME/bin
最后,我使用
typeset-u
删除路径中的任何副本(尽管它们来自何处对我来说是个谜)

export PATH="/usr/local/bin:$PATH"
typeset -U PATH 
所有这些之后,我的路径是这样的:

/Users/mark/.rvm/gems/ruby-1.9.3-p374/bin
/Users/mark/.rvm/gems/ruby-1.9.3-p374@global/bin
/Users/mark/.rvm/rubies/ruby-1.9.3-p374/bin
/Users/mark/.rvm/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/local/sbin
/Users/mark/bin
我知道
/etc/path
设置了以下路径:

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
因此,我编辑了该文件并删除了
/usr/local/bin'选项,以便设置它的唯一位置是在
.zshenv`

所有这些都包含在GitHub()上的我的dotfile存储库中,并在两台笔记本电脑上使用。在第一台笔记本电脑上,路径正确,RVM条目后面紧跟着
/usr/local/bin
。在第二台笔记本电脑上,它显示为我上面详述的内容

当zsh配置为相同副本时,我无法解释为什么第二台机器上的路径不正确

有人能告诉我为什么这条路会乱吗

谢谢。

这行错了:

export PATH=$HOME/.rvm/bin :$PATH
应该是:

export PATH=$HOME/.rvm/bin:$PATH

:$PATH
之前的空格导致您丢失
$PATH
以前的内容zsh按以下顺序读取文件(从)

  • $ZDOTDIR/.zshenv
  • /etc/zprofile
    (如果登录)
  • $ZDOTDIR/.zprofile
    (如果登录)
  • /etc/zshrc
    (如果是交互式的)
  • $ZDOTDIR/.zshrc
    (如果是交互式的)
  • /etc/zlogin
    (如果登录)
  • $ZDOTDIR/.zlogin
    (如果登录)
  • 如果ZDOTDIR未设置,则使用HOME。根据安装情况,上面列出的位于/etc中的文件可能位于另一个目录中

    您对(1)的更改在(2)之前;(2)的macOS默认值为:


    因此,您的更改将被macOS默认值覆盖。您需要稍后在管道中更改路径以保持秩序。

    是的,这是错误的。谢谢你的帮助。但是,更正它对原始问题没有影响。两台笔记本电脑都使用相同的zsh配置(通过Git),其中一台路径正确,而另一台没有。请尝试将
    set-x
    放在.zshenv的顶部。然后,它将在执行命令时显示这些命令,您可以看到路径是如何演变的。这应该可以帮助您看到问题的症结所在。通过遵循此问题的说明()并编辑/etc/paths文件,将
    /usr/local/bin
    移到列表的开头,我可以使两台机器都具有匹配且正确的路径。我仍然不明白为什么从我的
    .zshenv
    导出路径没有按预期工作。