478 Stimmen

Hinzufügen eines neuen Eintrags zur PATH-Variablen in ZSH

Ich verwende das zsh-Terminal und versuche, einen neuen Eintrag hinzuzufügen ( /home/david/pear/bin ) zum PATH variabel. Ich sehe keinen Verweis auf die PATH Variable in meinem ~/.zshrc Datei, aber die echo $PATH zurück:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Ich weiß also, dass die Pfadvariable irgendwo gesetzt wird. Wo ist die PATH Variable für das zsh-Terminal gesetzt/geändert?

586voto

ony Punkte 10685

Bei der Verwendung von ZSH können Sie spezielle Zuordnungen von Umgebungsvariablen verwenden. Sie können also einfach tun:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

Für mich ist das eine sehr nette Funktion, die auch auf andere Variablen übertragen werden kann. Beispiel:

typeset -T LD_LIBRARY_PATH ld_library_path :

460voto

Linuxios Punkte 33049

Hier fügen Sie diese Zeile hinzu .zshrc :

export PATH=/home/david/pear/bin:$PATH

EDIT : Das funktioniert zwar, aber Antwort von ony ist besser, da es die Vorteile der strukturierten Schnittstelle nutzt, die ZSH für Variablen wie $PATH . Dieser Ansatz ist Standard für bash aber soweit ich weiß, gibt es keinen Grund, es zu benutzen, wenn ZSH bessere Alternativen bietet.

113voto

Micah Elliott Punkte 8404

Sie können anhängen. zu Ihrem PATH auf eine minimale Weise. Keine Notwendigkeit für Klammern, es sei denn, Sie fügen mehr als ein Element an. Außerdem braucht man normalerweise keine Anführungszeichen. Also der einfache, kurze Weg zum Anhängen ist:

path+=/some/new/bin/dir

Diese Kleinbuchstaben-Syntax verwendet path als Array aber auch auf das Pendant in Großbuchstaben auswirkt, PATH (zu dem es sich "gebunden" über typeset ).

(Beachten Sie, dass keine : als Abscheider benötigt/gewünscht wird .)

Gemeinsame interaktive Nutzung

Dann wird das übliche Muster für das Testen eines neuen Skripts/einer neuen ausführbaren Datei:

path+=$PWD/.
# or
path+=$PWD/bin

Allgemeine Verwendung der Konfiguration

Sie können die Pfadeinstellungen in Ihrem .zshrc (wie oben) und es führt natürlich zu der früher aufgeführte Einstellungen haben Vorrang (auch wenn Sie gelegentlich noch die "Prepend"-Form verwenden möchten path=(/some/new/bin/dir $path) ).

Verwandte Leckerbissen

Behandlung von path auf diese Weise (als Array) auch bedeutet: keine Notwendigkeit für eine rehash um die neu gepfadeten Befehle zu finden.

Werfen Sie auch einen Blick auf vared path als dynamischer Weg zur Bearbeitung path (und andere Dinge).

Sie interessieren sich vielleicht nur für path für diese Frage, aber da wir über Exporte und Arrays sprechen, beachten Sie, dass Arrays können im Allgemeinen nicht exportiert werden.

Sie können sogar verhindern. PATH von der Übernahme von Doppeleinträgen (siehe und ):

typeset -U path

PATH vorausgefüllt

Der Grund dafür, dass Ihr Pfad bereits einige Einträge enthält, liegt darin, dass Ihre System-Shell-Dateien den Pfad für Sie festlegen. Dies wird in ein paar anderen Beiträgen behandelt:

73voto

Siva Praveen Punkte 1747

One-Liner, ohne Öffnung ~/.zshrc Datei

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

oder

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

Um die Wirkung zu sehen, tun Sie source ~/.zshrc in der gleichen Registerkarte oder in einer neuen Registerkarte

38voto

saneryee Punkte 2991
  1. Pfad zu ~/.zshrc hinzugefügt

    sudo vi ~/.zshrc

    neuen Pfad hinzufügen

    export PATH="$PATH:[NEW_DIRECTORY]/bin"
  2. ~/.zshrc aktualisieren

    ~/.zshrc speichern

    source ~/.zshrc

  3. PATH prüfen

    echo $PATH

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X