2013-03-31 52 views
2

我在Mac OS X 10.8.3上使用Homebrew。 Homebrew希望PATH中的/usr/local/bin目錄早於/usr/bin,否則將使用系統提供的程序代替自制軟件管理的替換。設置zsh PATH不生成所需的順序

我使用的zsh,在我.zshenv我重置路徑,然後用path_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" 

$ PATH還有其他各種補充。 RVM,/usr/local/sbin和我個人的bin目錄:

export PATH=$HOME/.rvm/bin :$PATH 
... 
export PATH=$PATH:/usr/local/sbin:$HOME/bin 

最後,我用typeset -u從路徑中刪除任何重複(雖然他們是從哪裏來的是一個謎給我)。

typeset -U PATH 

這一切以後這裏就是我的道路是什麼樣子:

/Users/mark/.rvm/gems/ruby-1.9.3-p374/bin 
/Users/mark/.rvm/gems/[email protected]/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/paths設置這些路徑:

/usr/bin 
/bin 
/usr/sbin 
/sbin 
/usr/local/bin 

所以我編輯該文件並刪除/usr/local/bin' option so that the only place it is being set is in .zshenv`。

所有這些都包含在GitHub(https://github.com/zan5hin/dotfiles)的我的dotfile存儲庫中,並在兩臺筆記本電腦上使用。在第一臺筆記本電腦上,路徑是正確的,/usr/local/bin緊隨RVM條目。在第二臺筆記本電腦上,它顯示如上所述。

當zsh配置是完全相同的副本時,我無法解釋第二臺計算機上路徑不正確的原因。

任何人都可以提出爲什麼路徑會出現故障嗎?

謝謝。

+0

按照這個問題的指導(http://stackoverflow.com/questions/10343834/homebrew-wants-me-to-amend-my-path-no-clue-how)和編輯/ etc /路徑文件將'/ usr/local/bin'移動到列表的頭部,我就可以讓兩臺機器都具有匹配和正確的路徑。我仍然不明白爲什麼從我的'.zshenv'輸出路徑不能按預期工作。 –

回答

0

此行是錯誤的:

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

它應該是:

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

空間:$PATH之前導致你失去的$PATH以前的內容。

+0

是的,這是錯誤的。謝謝你的收穫。但是,修正它對原始問題沒有影響。兩臺筆記本電腦都使用相同的zsh配置(通過Git),一臺有正確的路徑,另一臺沒有。 –

+0

嘗試在你的.zshenv的頂部放置'set -x'。然後它會在執行它們時顯示這些命令,並且您可以看到PATH如何演變。這應該可以幫助你看到它被搞亂的地方。 – Barmar