2014-02-06 2 views
0

Я просто заметил, что мой $PATH имеет недопустимое расположение:zsh path "нет такого файла или каталога", где я его отключил?

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

я использую prezto и в соответствии с Документами файлы конфигурации которые получены в следующем порядке:

  1. /и т.д./zshenv
  2. ~/.zshenv
  3. /и т.д./zprofile
  4. ~/.zprofile
  5. /и т.д./zshrc
  6. ~/.zshrc
  7. ~/.zpreztorc
  8. /и т.д./zlogin
  9. ~/.zlogin
  10. ~/.zlogout
  11. /и т.д./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:... и интерпретирует его как один длинный путь. То есть : не принимается как разделитель, а как часть имен каталогов. Любой вы получаете то же самое сообщение об ошибке вы получите с любой другой несуществующей директории:

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

Спасибо за разъяснение – superuseroi

+0

Хотя у меня мало надежды получить ответ, но вот это: Почему downvote? Я разумно (читай: очень) уверен, что я правильно поставил диагноз и ответил на вопрос. Если есть фактическая ошибка или какая-то другая проблема с ответом, я хотел бы знать, что это такое, чтобы я чему-то научился и/или улучшил ответ. – Adaephon