W moich bash_profile Mam następujące linie:Jak edytować zmienną path w zsh
PATHDIRS="
/usr/local/mysql/bin
/usr/local/share/python
/opt/local/bin
/opt/local/sbin
$HOME/bin"
for dir in $PATHDIRS
do
if [ -d $dir ]; then
export PATH=$PATH:$dir
fi
done
Jednak starałem kopiując to do mojego .zshrc i $PATH
nie jest ustawiony.
Najpierw wstawiam instrukcje echo
do funkcji "jeśli katalog istnieje" i odkryłem, że instrukcja if oceniała wartość false, nawet dla wyraźnie istniejących katalogów.
Potem usuwa katalog-exists sprawdzić, a $PATH
był nieprawidłowo ustawione tak:
/usr/bin:/bin:/usr/sbin:/sbin:
/usr/local/bin
/opt/local/bin
/opt/local/sbin
/Volumes/Xshare/kburke/bin
/usr/local/Cellar/ruby/1.9.2-p290/bin
/Users/kevin/.gem/ruby/1.8/bin
/Users/kevin/bin
Żaden z programów w dolnych katalogów były znalezione lub wykonywane.
Co robię źle?
+1 - Dwie dodatkowe szybkie wskazówki przydatne do manipulacji '$ PATH' w' zsh' (dla każdego, kto przechodzi): * (1) *, aby wstawić zamiast dodawać: 'ścieżka [1,0] =/ścieżka/to/dir' i * (2) * jeśli używasz globowania do znalezienia katalogów, nie musisz używać pętli for, a zamiast tego po prostu wykonaj 'path + = ($ PWD/node_modules/**/bin ') (działa również z * (1) *). – unthought
Dzięki, użyłem twojej sugestii, z path = ($^path (N- /)). Czy istnieje sposób na zapewnienie, że te same katalogi nie będą duplikowane w zmiennej $ PATH za każdym razem, gdy uruchomię źródło ~/.zshrc? Dzięki – stansult
@stansult [Czy istnieje sposób na dodanie katalogu do mojej PATH w zsh tylko wtedy, gdy nie jest już obecny?] (Http://unix.stackexchange.com/questions/62579/is-there-a-way- to-add-a-directory-to-my-path-in-zsh-only-if-its-not-already-pre) – Gilles