
Einige Anwendungen weisen mich an, den Umgebungsvariablen PATH etwas hinzuzufügen. Ich weiß, dass dies unter anderem durch das Erstellen einer Datei unter möglich ist ~/.zshrc
, aber ich möchte wissen, wo die Datei ist, in der die Variable PATH=...
gespeichert ist.
Als ich es eintippte, echo $PATH
erhielt ich:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Xamarin Workbooks.app/Contents/SharedSupport/path-bin
Aus der Datei /etc/paths
habe ich Folgendes erhalten:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Welche Datei hat also die zusätzlichen Pfade angehängt?
Antwort auf den Kommentar:
Ich habe: (verzeihen Sie mir, dass ich meinen Benutzernamen in geändert habe alice
)
grep: /Users/alice/.profile: No such file or directory
grep: /etc/environment: No such file or directory
grep: /etc/zsh/zprofile: No such file or directory
grep: /Users/alice/.zshrc: No such file or directory
grep: /Users/alice/.profile: No such file or directory
Antwort1
Wie Sie sagten inIhre eigene Antwortmüssen Sie nicht wissen, wo die PATH
Variable ursprünglich aufgefüllt wurde.
PATH
Sie können am Anfang oder Ende problemlos neue Pfade hinzufügen und zsh
Duplikate bequem entfernen.
Sie können die PATH
Variable und das zugehörige path
Array zunächst eindeutig machen, indem Sie
typeset -U -g PATH path
Die Variablen werden dannbleibenaufgrund dieses Befehls einzigartig.
So stellen Sie ein paar Pfade voran:
path=( /new/path1 /new/path2 $path )
So fügen Sie einige Pfade an:
path=( $path /new/path1 /new/path2 )
oder,
path+=( /new/path1 /new/path2 )
Der PATH
Wert der Variablen wird entsprechend aktualisiert.
Sie können dies in Ihrer Datei tun $ZDOTDIR/.zprofile
, die automatisch von jeder zsh
Login-Shell als Quelle verwendet wird. Dies in Ihrer $ZDOTDIR/.zshenv
Datei zu tun wäre unnötig, da diese Datei vonjeder Typder zsh
Aufruf (und sollte daher, wenn überhaupt nötig, wirklich kurz gehalten werden; ich habe es ZDOTDIR=$HOME/.zsh
beispielsweise einfach dort eingefügt).
Beachten Sie, dass PATH
es sich bereits um eine Umgebungsvariable handelt. Ein erneuter Export hat daher keinen Zweck.
Antwort2
Die Datei /etc/zprofile
dient /usr/libexec/path_helper
zum Festlegen der Standardeinstellung PATH
und wir verfügen nicht über den Quellcode davon.
Im Folgenden wird gezeigt, wie Sie benutzerspezifische Änderungen vornehmen PATH
:
Erstellen/bearbeiten ~/.zprofile
und fügen Sie den folgenden Inhalt hinzu:
# append to PATH
export PATH="$PATH:.../to/target/bin"
# prepend to PATH
export PATH=".../to/target/bin:$PATH"
# remove duplicate in PATH
typeset -U PATH
Antwort3
Die folgenden Schritte zeigen Ihnen, wie Sie systemweite Änderungen vornehmen PATH
:
Erstellen Sie eine Datei mit der Namenskonvention: Prioritäts-Anwendungsname (z. B. „20200418-vscode“, ich verwende einfach das Datum, um die Priorität eindeutig zu machen). Speichern Sie
PATH
darin dann den Pfad, den Sie hinzufügen möchten.Verschieben Sie die Datei nach
/etc/paths.d/
, fertig.
Hinweis 1:Denken Sie daran, eine neue Terminalsitzung zu erstellen, um die Änderung anzuzeigen echo $PATH
.
Hinweis 2: Diese Methode nurfügt hinzuIhr Weg zu PATH
.