Записи переменных ZSH PATH обращены назад в OS X Catalina - PullRequest
0 голосов
/ 02 декабря 2019

Итак, я только что установил macOS Catalina и MacPorts. Из-за этого мне пришлось изменить переменные окружения PATH и MANPATH в моем файле .zshenv следующим образом:

# configure an environment variable for Racket
export RACKET=/Applications/Racket

# configure an appropriate PATH variable for use with MacPorts
export PATH="/opt/local/bin:/opt/local/sbin:$RACKET/bin:$PATH"

# configure an appropriate MANPATH variable for use with MacPorts
export MANPATH="/opt/local/share/man:$RACKET/man:$MANPATH"

Однако выполнение следующей команды echo $PATH дает мне обратное тому, что я ожидал:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/Applications/Racket/bin

Любые идеи о том, что я должен сделать, чтобы исправить это? Тот факт, что ввод для /opt/local/* подходит к концу, нарушает некоторые сценарии сборки для довольно полезных утилит, которые я использую.

1 Ответ

0 голосов
/ 02 декабря 2019

Я подозреваю, что проблема в том, что .zshenv выполняется перед любыми другими файлами запуска, которые также изменяют PATH. (Это не полное объяснение, так как /etc/zprofile должно перезаписывать PATH, не предваряя его. Но это близко.)

Вместо установки PATH в .zshenv (который получендля всех оболочек, интерактивных или нет), вместо этого сделайте это в ~/.zprofile.

См. раздел о файлах запуска / завершения в man zsh для полного объяснения того, какие файлы полученыи когда.

...