Есть ли в zsh простой способ добавить каталог в мой путь, только если его еще нет? (или, в более общем случае, любая переменная окружения). Я пробовал:
PATH+=/my/directory
... но если он выполняется дважды, он добавляется дважды.
Есть ли в zsh простой способ добавить каталог в мой путь, только если его еще нет? (или, в более общем случае, любая переменная окружения). Я пробовал:
PATH+=/my/directory
... но если он выполняется дважды, он добавляется дважды.
Ответы:
In zsh $PATHпривязан (см. typeset -T) К $pathмассиву. Вы можете заставить этот массив иметь уникальные значения с помощью:
typeset -U path
А затем добавьте путь с помощью:
path+=(~/foo)
Не нужно беспокоиться, если он уже был там.
Чтобы добавить его в начало, сделайте:
path=(~/foo "$path[@]")
или:
path[1,0]=~/foo
если ~/fooбыл уже в $pathтом, переместит его на фронт.
typeset -Ug path? Когда я использую typeset -U pathв своем ~/.zshrcфайле, я всегда получаю сообщение об ошибке, когда во время работы zshrc ничего не находится в пути
-gзаключается в том, чтобы избежать ограничения области, но в ~/.zshrcобласти уже глобально. Кроме того, я никогда не видел zshжалобы на пустоту $PATH(за исключением, конечно, ошибки команды не найдены).
Вы должны будете сделать что-то вроде:
if echo $PATH | grep :newpath: ; then doIfPresent; else doIfMissing; fi
Это работает только в том случае, если newpathразграничены двумя ':', необходимо учитывать случаи, когда оно находится в начале или в конце аналогично.
Urgh.
echo "$PATH": всегда ставьте двойные кавычки вокруг переменных ). case ":$PATH:" in *:/new/directory:*) :;; *) PATH=$PATH:/new/directory;; esac