/ / Seltsames Verhalten mit zsh PATH - zsh, osx-yosemite, zshrc

Sonderbares Verhalten mit zsh PATH - zsh, osx-yosemite, zshrc

Ich ermutige gerade ein merkwürdiges Problem mit zsh heute.

Meine Umgebung ist Mac OS X Yosemite, zsh 5.0.5 (x86_64-apple-darwin14.0)

In .zshrc habe ich die PATH-Variable manuell auf "Gefällt mir" gesetzt

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

Versuchen echo $PATH Im Terminal ist das Ergebnis wie erwartet (enthalten ~/.composer/vendor/bin). Versuchen Sie dann, eine Binärdatei von auszuführen ~/.composer/vendor/binEs wird mir immer "zsh: Befehl nicht gefunden" Fehler zurückgeben.

Versuche, zu bash zu wechseln, echo $PATH ist auch wie erwartet, haben das gleiche Ergebnis wie zsh Shell. Versuchen Sie, eine Binärdatei von auszuführen ~/.composer/vendor/bin, kein Problem gefunden. Seem die PATH var funktioniert gut in der Bash Shell.

Was ist mit meiner zsh-Shell falsch?

Vielen Dank

Antworten:

3 für die Antwort № 1

Versuchen Sie es mit $HOME Anstatt von ~. In vielen Situationen erweitern sich die Shells nicht ~ wenn Sie es erwarten, und es ist normalerweise besser zu benutzen $HOME. ~ ist eigentlich nur eine Abkürzung für den interaktiven Gebrauch. (Der einzige Fall, an den ich mich erinnern kann, wo ~ war bevorzugt in einem .gitalias, wo ~ erweitert wurde und Variablen nicht waren.)


1 für die Antwort № 2

Art rehash abholen $PATH Änderungen.

Von dem Zsh-Benutzerhandbuch:

Die Art, wie Befehle gespeichert werden, hat andere Konsequenzen. Bestimmtes, zsh Ich suche keinen neuen Befehl, wenn er bereits weiß, wo er einen finden kann Ich lege ein neues ls Befehl in /usr/local/bin im obigen Beispiel zsh würde weiter verwenden /bin/ls (vorausgesetzt, es wurde bereits gefunden). Zu behebe das, da ist der Befehl rehash, die tatsächlich die leert Befehlshash-Tabelle, damit das Finden von Befehlen wieder von startet kratzen. Benutzer von csh kann sich erinnern, dass ich schreiben musste rehash ziemlich viel mit neuen Befehlen: es ist nicht so schlecht in zsh, weil wenn kein Befehl war bereits hashed, oder der bestehende verschwand, zsh werden scanne den Pfad automatisch erneut; Außerdem, zsh führt eine Neuaufbereitung durch von selbst, wenn $path ist verändert. Also ein neues Duplikat hinzufügen Befehl irgendwo zum Kopf von $path ist der Hauptgrund dafür muss erneut aufgefrischt werden.

BEARBEITEN Allerdings könnte @WilliamPursell mit seinem Kommentar auf etwas stehen:

beachten Sie, dass "Komponist"! = ".composer"