Нужна помощь перед $PATH

#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 в свою функцию, вызвать ее и посмотреть, как она себя ведет.