Где разместить утверждения переменной $PATH в zsh?



Я люблю zsh, но я не уверен, где разместить мой $PATH и другие переменные утверждения? Я нахожу, что они разбросаны между файлами .zshrc.zprofile.bashrc.bash_profile, а иногда в два раза.



Я понимаю, что имея ничего внутри bash файлы не имеет смысла, видя, как я использую zsh, а где именно я должен делать мой rvm,python,node etc дополнения к моему $PATH?



есть конкретный файл, который я должен использовать (т. е. .zshenv что значит не в настоящее время существует в моей установке), один из тех, которые я сейчас использую, или это даже имеет значение?

618   3  

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 и всегда читаю by zsh при входе в систему-у меня нет никакого опыта работы с проектом 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_profile are не читать 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

    Ничего не найдено.