2014-02-06 47 views
0

我只注意到我$PATH有一個無效的位置:zsh路徑「沒有這樣的文件或目錄」我在哪裏取消它?

\> $PATH
zsh: no such file or directory: /usr/bin:/bin:/usr/sbin:/sbin: ...

我用prezto並根據配置文件中的順序來源的文檔:

  1. 的/ etc/zshenv
  2. 〜/ .zshenv
  3. 的/ etc/zprofile
  4. 〜/ .zprofile
  5. 的/ etc/zshrc
  6. 〜/ .zshrc
  7. 〜/ .zpreztorc
  8. 的/ etc /的zlogin
  9. 〜/ .zlogin
  10. 〜/ .zlogout
  11. 的/ etc/zlogout

我檢查了整個清單,我找不到任何可能會發生的事/usr/bin

任何有關如何找出觸發問題的建議?

謝謝!

回答

8

據我所知,你的PATH沒有錯。如果你想看到的PATH使用echo內容:

% echo $PATH 
/usr/sbin:/usr/bin:/sbin:/bin 

PATH是一個冒號分隔的列表來搜索命令。實際上,zsh會嘗試每個路徑的命令名稱並執行第一個查找(/usr/sbin/foo/usr/bin/foo等)。如果任何列出的目錄不存在,則不會有錯誤消息,zsh將根本找不到二進制文件並嘗試下一個。

您的案例中的問題是通過嘗試執行$PATH來觸發的。在執行命令行之前,zsh(除其他外)用它們的內容替換所有變量,這稱爲參數擴展(因此man 1 zshexpn以獲取更多信息)。

所以,當你只是寫$PATH,zsh的與/usr/bin:/bin:/usr/sbin:/sbin:...替換它,並interpretes它作爲一個長期的路徑。也就是說,:不作爲分隔符,而是作爲目錄名稱的一部分。任何你所得到的是同樣的錯誤信息,你會與任何其他不存在的目錄中獲取:

% ls /some/path 
dir1 dir2 
% /some/path/nothere/notthere 
zsh: no such file or directory: /some/path/nothere/notthere 
+0

感謝澄清 – superuseroi

+0

雖然我得到答案的希望不大,但在這裏它是:爲什麼downvote?我很合理(閱讀:非常)確信我正確診斷並回答了問題。如果答案中存在事實錯誤或其他問題,我想知道它是什麼,以便我學習某些內容和/或改進答案。 – Adaephon

相關問題