zsh path «нет такого файла или каталога», где я его отключил?

Вопрос: Я только заметил, что у моего $PATH есть недопустимое место: > $PATH zsh: no such file or directory: /usr/bin: /bin: /usr/sbin: /sbin:... Я использую prezto, и в соответствии с документами файлы конфигурации находятся в следующем порядке: /И т.д. /zshenv ~/.zshenv /И т.д. /zprofile ~/.zprofile /И т.д. /zshrc ~/.zshrc ~/.zpreztorc /И т.д. /zlogin ~/.zlogin ~/.zlogout

Вопрос:

Я только заметил, что у моего $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

Любое предложение о том, как я могу найти, что вызывает проблему?

Благодарю!

Лучший ответ:

Насколько я могу судить, нет ничего плохого в вашей 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

Оцените статью
Добавить комментарий