Где разместить утверждения переменной $PATH в zsh?
Я люблю zsh, но я не уверен, где разместить мой $PATH и другие переменные утверждения? Я нахожу, что они разбросаны между файлами .zshrc.zprofile.bashrc.bash_profile, а иногда в два раза.
Я понимаю, что имея ничего внутри bash файлы не имеет смысла, видя, как я использую zsh, а где именно я должен делать мой rvm,python,node etc дополнения к моему $PATH?
есть конкретный файл, который я должен использовать (т. е. .zshenv что значит не в настоящее время существует в моей установке), один из тех, которые я сейчас использую, или это даже имеет значение?
3 ответов:
tl; dr версия: используйте
~/.zshrcи прочитайте man page чтобы понять разницу между:
~/.zshrc,~/.zshenvи~/.zprofile.
по поводу моего комментария
в моем комментарии прилагается к ответу Кев дал я сказал:
это кажется неправильным - /etc / профиль не указан ни в одной документации zsh, которую я могу находить.
это оказывается частично неверным:
/etc/profileмая быть получены путемzsh. , это происходит только еслиzshэто "служитьshилиksh"; в этих режимах совместимости:обычные сценарии запуска/выключения zsh не выполняются. Вход оболочки источник / etc / профиль, а затем $HOME/.профиль. Если переменная среды ENV установлена при вызове, $ENV поступает после профиля файлы сценариев. Значение ENV подвергается расширению параметров, замене команд и арифметическому расширению перед интерпретацией в качестве пути. [man zshall,"совместимость"].
The ArchWiki zsh link говорит:
при входе в систему Zsh создает следующие файлы в следующем порядке:
/etc / profile
Этот файл поставляется всеми совместимыми с Bourne оболочками при входеэтот подразумевается, что
/etc/profileи всегда читаю byzshпри входе в систему-у меня нет никакого опыта работы с проектом Arch Linux; wiki может быть правильным для этого дистрибутива, но это не в целом правильно. Информация и неверно по сравнению с страницами руководства zsh и, похоже, не применяется к zsh на OS X (пути в$PATHустановить в/etc/profileне делайте это для моих сеансов zsh).
в адрес вопрос:
где именно я должен размещать свои RVM, python, node и т. д. дополнения к моему $ PATH?
вообще, я бы экспортировал мой
$PATHС~/.zshrc, но это стоит того, чтобы читать zshall man-страница, в частности, раздел "файлы запуска / выключения" -~/.zshrcчитать interactive снарядов, которые могут или не могут удовлетворить ваши потребности - если вы хотите, чтобы$PATHдля каждогоzshоболочка вызывается вами (обаinteractive, а не какloginи т. д. и т. п.), то~/.zshenvэто лучший вариант.есть ли конкретный файл, который я должен использовать (т. е.zshenv, который в настоящее время не существует в моей установке), один из тех, которые я сейчас использую, или это даже имеет значение?
есть куча файлов, прочитанных при запуске (проверьте связанный
manстраницы), и есть причина для этого - каждый файл имеет определенное место (настройки для каждого пользователя, настройки для конкретных пользователей, настройки для оболочек входа, настройки для каждой оболочки и т. д.).
Не беспокойтесь о~/.zshenvне существует - если вам это нужно, сделайте это, и он будет прочитан.
.bashrcи.bash_profileare не читатьzsh, если вы явно не закупаем их из~/.zshrcили аналогичный; синтаксис междуbashиzshи не всегда совместимы. Оба.bashrcи.bash_profileпредназначены дляbashнастройки, а неzshнастройки.
вот документы из справочных страниц zsh в разделе Файлы запуска/завершения работы.
Commands are first read from /etc/zshenv this cannot be overridden. Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the former affects all startup files, while the second only affects global startup files (those shown here with an path starting with a /). If one of the options is unset at any point, any subsequent startup file(s) of the corresponding type will not be read. It is also possi- ble for a file in $ZDOTDIR to re-enable GLOBAL_RCS. Both RCS and GLOBAL_RCS are set by default. Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zpro- file. Then, if the shell is interactive, commands are read from /etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the shell is a login shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.из этого мы видим, что файлы заказов читаются:
/etc/zshenv # Read for every shell ~/.zshenv # Read for every shell except ones started with -f /etc/zprofile # Global config for login shells, read before zshrc ~/.zprofile # User config for login shells /etc/zshrc # Global config for interactive shells ~/.zshrc # User config for interactive shells /etc/zlogin # Global config for login shells, read after zshrc ~/.zlogin # User config for login shells ~/.zlogout # User config for login shells, read upon logout /etc/zlogout # Global config for login shells, read after user logout fileВы можете получить дополнительную информацию здесь.
У меня была аналогичная проблема (в bash terminal команда работала правильно, но zsh показал команду не найдена ошибка)
устранение:
просто вставьте то, что вы ранее вставляли в ~/.bashrc to:~/.zshrc
Comments