/ / Podivné správanie so zsh PATH - zsh, osx-yosemite, zshrc

Divné správanie so zsh PATH - zsh, osx-yosemite, zshrc

Práve podporujem zvláštny problém so zsh dnes.

Moje prostredie je Mac OS X Yosemite, zsh 5.0.5 (x86_64-apple-darwin14.0)

V .zshrc som ručne nastavil premennú PATH na niečo podobné

export PATH="$PATH:~/.composer/vendor/bin"

vyskúšať echo $PATH v termináli, výsledok je podľa očakávania (obsahuje ~/.composer/vendor/bin). Potom skúste spustiť binárne z ~/.composer/vendor/bin, Vždy sa mi vráti "chyba zsh: príkaz nebol nájdený".

Skúste prejsť na bash, echo $PATH je tiež podľa očakávania, majú rovnaký výsledok ako zsh shell. Skúste spustiť binárne z ~/.composer/vendor/bin, nebol nájdený žiaden problém. Zdá sa, že PATH var pôsobí dobre na bash shell.

Čo je zle s mojím zsh shellom?

Vďaka

odpovede:

3 pre odpoveď č. 1

Skúste použiť $HOME namiesto ~, V mnohých situáciách sa škrupiny nerozšíria ~ keď ich očakávate a je zvyčajne lepšie používať $HOME, ~ je naozaj určený iba ako skratka pre interaktívne využitie. (Jediný prípad, kde si môžem spomenúť ~ bol uprednostňovaný v .gitalias, kde bol ~ rozšírený a premenné neboli.)


1 pre odpoveď č. 2

typ rehash vyzdvihnut $PATH zmeny.

Z zsh užívateľskú príručku:

Spôsob uloženia príkazov má ďalšie dôsledky. Konkrétne, zsh nebudú hľadať nový príkaz, ak už vie, kde nájsť Dal som nový ls príkaz v /usr/local/bin vo vyššie uvedenom príklade, zsh bude pokračovať v používaní /bin/ls (za predpokladu, že už bolo zistené). na opraviť to, tam je príkaz rehash, ktorý v skutočnosti vypúšťa príkaz hash tabuľka, takže nájdenie príkazov znova začína od škrabanec. Používatelia csh môže pamätať na to, že musíte písať rehash docela veľa s novými príkazmi: to nie je tak zlé zsh, pretože ak nebol žiadny príkaz už havaroval alebo existujúci zmizol, zsh vôľa automaticky znova vyhľadá cestu; ďalej, zsh vykoná rehash z vlastnej iniciatívy, ak $path je zmenená. Pridanie nového duplikátu Príkaz niekde smerom k hlave $path je hlavným dôvodom potrebuje rehash.

EDIT Avšak @WilliamPursell by mohol byť na niečo s jeho komentár:

Všimnite si, že "skladateľ"! = ".composer"