Переменная PATH в .zshenv или .zshrc

Моя настройка - zsh 5.0.5 в arch linux

Я установил переменную PATH, как показано ниже .zshenv

typeset -U path
path=(~/bin $path)
DW=$HOME/Downloads

но это не сработало. print $PATH показывает только

/usr/local/bin:/usr/bin:/usr/bin/vendor_perl:/usr/bin/core_perl

.zshenv был прочитан, потому что я видел, что переменная DW установлена. Переменная PATH не установлена. И я не понимаю, что после переименования .zshenv в .zshrc переменная PATH работает по назначению.

Нужны ли какие-либо специальные параметры среды настройки настройки в .zshenv?

Ответ 1

Я сам столкнулся с этой проблемой, и реальным ответом является то, что Zsh on Arch sources /etc/profile - который перезаписывает и экспортирует PATH - после, используя ~/.zshenv.

Смотрите: https://wiki.archlinux.org/index.php/Zsh#Configuration_files

Ответ 2

Похоже, что когда у вас есть макросы или некоторые дистрибутивы Linux, существует каноническое решение проблемы, которое включает /etc/paths или /etc/paths.d. Вы должны позволить /usr/libexec/path_helper создать свой путь для вас с помощью файлов конфигурации.

Это сразу решило проблему во всех местах для меня.

Ответ 3

У меня такая же проблема. Причина в том, что моя .zshrc(новая установка oh-my-zsh) переопределяет PATH (игнорируя существующее значение):

export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl"

Чтобы исправить, я прокомментирую строку.