Чи є простий спосіб в zsh додати каталог до мого PATH, лише якщо він ще не присутній? (або, загалом, будь-яка змінна середовище). Я спробував:
PATH+=/my/directory
... але якщо це виконується двічі, він додається двічі.
Чи є простий спосіб в zsh додати каталог до мого PATH, лише якщо він ще не присутній? (або, загалом, будь-яка змінна середовище). Я спробував:
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файлі, я завжди отримую помилку про те, що нічого не стоїть на шляху, поки працює
-gполягає у тому, щоб уникнути обмеження сфери застосування, але в цьому ~/.zshrc, сфера застосування вже є глобальною. Крім того, я ніколи не бачив zshскаржитися на порожнє $PATH(за винятком команди, звичайно, не знайдено помилок).
Вам доведеться зробити щось на кшталт:
if echo $PATH | grep :newpath: ; then doIfPresent; else doIfMissing; fi
Це працює лише в тому випадку, якщо newpathрозміщено бу два ":", потрібно розглянути випадки, коли це на початку або в кінці аналогічно.
Урх.
echo "$PATH": завжди ставити подвійні лапки навколо змінних підстановок ). case ":$PATH:" in *:/new/directory:*) :;; *) PATH=$PATH:/new/directory;; esac