#macos #path #zsh
Вопрос:
У меня есть каталог $CTERDAMBIN
, к которому я хочу добавить (не добавлять) $PATH
. Я говорю «добавить», потому что я хочу, чтобы некоторые исполняемые файлы имели приоритет над системой по умолчанию, особенно когда я запускаю vim
свою версию vim (помещенную в эту папку), а не ту, в /usr/bin
которой она находится .
Вот что я поместил в свой zshrc:
export CTERDAMBIN="$CTERDAMHOME/bin"
# ...
add2path() {
if [[ :$PATH: != *:$1:* ]]; then
if [[ $2 == "head" ]]; then
export PATH=$1:$PATH
else # implies $2 == "tail"
export PATH=$PATH:$1
fi
fi
}
# ...
add2path $CTERDAMBIN head
Я подумал, что этого должно быть достаточно, чтобы поставить $CTERDAMBIN
в начале pf $PATH
. Однако, когда я войду в zsh, я обнаружу, что $PATH
это соответствует этой последовательности:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Library/TeX/texbin
/usr/local/go/bin
/Users/sterdam/cterdam/bin
/opt/homebrew/bin
/opt/homebrew/sbin
/opt/homebrew/opt/llvm/bin
Где $CTERDAMBIN
находится /Users/sterdam/cterdam/bin
в середине. Почему он не добавляется сверху? Есть ли что-то еще, происходящее после того, как мой zshrc запускается каждый раз, когда я регистрируюсь, что добавляло все эти лучшие записи в $PATH?
Я нахожусь на zsh в macOS 11.4 с чипом Apple. Мой zshrc также запускает tmux, если он еще не запущен.
Комментарии:
1. Я испытываю ту же проблему в macOS 11.6 с zsh. Мне нужно добавить в начало $PATH. Метод, который я использовал, таков: путь экспорта=»/foo/bar:$ПУТЬ».
2. Я предлагаю вам ввести a
setopt localoptions xtrace
в свою функцию, вызвать ее и посмотреть, как она себя ведет.