Ответ 1
tl; dr версия: используйте ~/.zshrc
И прочитать справочную страницу, чтобы понять различия между ними:
~/.zshrc
,~/.zshenv
и~/.zprofile
.
Что касается моего комментария
В своем комментарии к ответу kev дал, я сказал:
Это кажется неправильным -/etc/profile не указан в любой документации zsh, которую я могу найти.
Это оказывается частично неправильным: /etc/profile
может быть получен с помощью zsh
. Однако, это происходит только в том случае, если zsh
"вызывается как sh
или ksh
"; в этих режимах совместимости:
Обычные сценарии запуска/выключения zsh не выполняются. Введите исходный код оболочки /etc/profile, за которым следует $HOME/.profile. Если переменная окружения ENV задана при вызове, $ENV получается после скриптов профиля. Значение ENV подвергается расширению параметров, подстановке команд и арифметическому расширению, прежде чем интерпретироваться как путь. [man zshall, "Совместимость" ].
Ссылка ArcWiki ZSH говорит:
При входе в систему Zsh отправляет следующие файлы в следующем порядке:
/И т.д./профиль | Этот файл создается всеми совместимыми с Bourne оболочками при входе в систему
Это означает, что /etc/profile
всегда читается zsh
при входе в систему - у меня нет опыта работы с проектом Arch Linux; вики могут быть правильными для этого дистрибутива, но это, как правило, неверно. Информация неверна по сравнению с страницами руководства zsh и, похоже, не относится к zsh на OS X (пути в $PATH
, установленные в /etc/profile
, не попадают на мои zsh-сессии),
Чтобы задать вопрос:
где именно я должен размещать мои rvm, python, node и т.д. дополнения к моему $PATH?
Как правило, я экспортировал бы мой $PATH
из ~/.zshrc
, но стоит прочитать zshall man page, в частности, раздел "STARTUP/SHUTDOWN FILES" - ~/.zshrc
читается для интерактивных оболочек, которые могут или не подходят вашим потребностям - если вы хотите $PATH
для каждого вызванного вами оболочки zsh
(оба interactive
а не, как login
, так и нет, и т.д.), тогда ~/.zshenv
является лучшим вариантом.
Существует ли конкретный файл, который я должен использовать (например,.zshenv, который в настоящее время не существует в моей установке), один из тех, которые я сейчас использую, или это даже имеет значение?
Там есть куча файлов, прочитанных при запуске (проверьте связанные страницы man
), и есть причина для этого: каждый файл имеет свое особое место (настройки для каждого пользователя, настройки для пользовательских настроек для систем входа в систему, настройки для каждой оболочки и т.д.).
Не беспокойтесь о ~/.zshenv
not existing - если вам это нужно, сделайте это, и он будет прочитан.
.bashrc
и .bash_profile
считаются не, прочитанными zsh
, если вы явно не используете их из ~/.zshrc
или подобных; синтаксис между bash
и zsh
не всегда совместим. Оба .bashrc
и .bash_profile
предназначены для настроек bash
, а не для zsh
.