zsh продолжает забывать PATH vars

Я использую [oh-my-zsh] в iTerm на MacBook с помощью Mavericks.

Я установил iTerm для загрузки моего .zsh-файла при загрузке, и в основном это работает.

cd && source .zsh 

За исключением случаев, когда этого не происходит. Иногда, даже в середине сеанса, он забудет мои окружения vars и псевдонимы. Если это произойдет, даже базовые вещи, такие как mvn «забыты».

Я не уверен, что это проблема с iTerm, zsh или oh-my-zsh. Есть предположения?

Согласно руководству пользователя zsh , псевдонимы должны быть определены в ~/.zshrc :

Вы можете подумать о некоторых псевдонимах, которые вы хотите определить в своих файлах запуска; .zshrc – это, вероятно, правильное место.

У него также есть подсказка для сохранения вашего ~/.zshrc чистоте:

Я использую только псевдонимы в интерактивных оболочках, поэтому я определяю их из .zshrc, но вы можете использовать .zshenv, если вы используете более широкие псевдонимы. На самом деле, чтобы сохранить мой .zshrc аккуратный, я сохраняю все псевдонимы в отдельном файле с именем .aliasrc и в .zshrc. У меня есть:

 if [[ -r ~/.aliasrc ]]; then . ~/.aliasrc fi 

который проверяет, есть ли читаемый файл ~ / .aliasrc, и если он есть, он запускает его точно так же, как запускаются обычные файлы запуска.

Таким образом, вы можете создать файл с именем ~/.aliasrc и ~/.aliasrc его источник ( source ) из вашего ~/.zshrc .

Тот же источник предполагает, что переменные среды должны находиться в ~/.zshenv :

Самое простое место, чтобы положить их в .zshenv — следовательно, это имя. Переменные окружения будут переданы любым программам, запускаемым из оболочки, поэтому их может быть достаточно, чтобы определить их в .zlogin или .zprofile: однако любая оболочка, запущенная для вас не интерактивно, не будет запускать их, и есть другие возможные проблемы если вы используете систему окон, которая запускается оболочкой, отличной от zsh или которая вообще не запускает файл запуска оболочки, я должен был настроить мою, чтобы сделать это. Так что. Zshenv – самое безопасное место; для определения переменных окружения не требуется много времени. Другие люди, несомненно, дадут вам совершенно противоречивые взгляды, но это люди для вас.

Поместите переменные окружения в файл ~/.zshrc , они автоматически получат ~/.zshrc для каждой сессии zsh.