Muss ich meinen PATH manuell in Cygwin-Shells aktualisieren?

0

Ich benutze Cygwin unter Windows 7. Ich bin eigentlich kein Windows-Benutzer, daher ist es schon etwas unbequem, wenn ich diese zusätzliche Schicht zwischen meinem Betriebssystem und Zsh, meiner bevorzugten Shell, haben muss.

Nun muss ich häufig meinen PFAD in Windows ändern. Die, die Sie über die erweiterten Systemeinstellungen ändern. Ich habe jedoch festgestellt, dass sich diese PATH-Änderung unter Cygwin nicht auf Zsh ausbreitet.

Sehr gut, also schaue ich rein .zshrcund ich finde:

# User configuration

export PATH="/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Windows Live/Shared:/cygdrive/c/Program Files (x86)/Intel/OpenCL SDK/3.0/bin/x86:/cygdrive/c/Program Files (x86)/Intel/OpenCL SDK/3.0/bin/x64:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/ffmpeg/bin"
# export MANPATH="/usr/local/man:$MANPATH"

Ich habe das nicht hinzugefügt (na ja, vielleicht die ffmpeg etwas am Ende). Woher kommt das? Hat Cygwin das bei der Installation von Zsh anfangs eingerichtet? Findet Oh-my-zsh das irgendwie heraus? Irgendwie muss es meinen PFAD irgendwann gekannt und meinen hinzugefügt haben .zshrc.

Das Cygwin-FAQ sagt,

Alle Windows-Umgebungsvariablen werden beim Start von Cygwin importiert

Aber das scheint nicht der Fall zu sein export PATH Erklärung in der .zshrc überschreibt, was Cygwin tut.

Unnötig zu sagen, ich bin sehr verwirrt. Also hier ist die Frage:

Wie empfehle ich einer Cygwin-Shell beim Ändern meines Windows-Pfads, dass sie sich geändert hat? Muss ich mein Shell-Profil immer manuell bearbeiten? Oder kann dies automatisch generiert werden?

slhck
quelle

Antworten:

2

Auf der install.sh Skript für oh-my-zsh kannst du folgendes sehen:

echo "\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m"
sed -i -e "/export PATH=/ c\\
export PATH=\"$PATH\"
" ~/.zshrc

Der PATH, den Sie auf Ihrer Cygwin-Shell hatten (die beim Starten von Cygwin wiederum von Windows kopiert wurde) wurde während der Installation zur .zshrc hinzugefügt, wodurch sie effektiv gesperrt wurde.

Cygwin greift diese Umgebungsvariablen beim Start auf, dann werden die .zshrc-Datei (und andere Dateien wie .zshenv) ausgeführt und überschreiben alle exportierten Umgebungsvariablen.

Wenn Sie die Exportanweisung aus der .zshrc-Datei entfernen, würde Zsh nur den PATH von seinem übergeordneten Prozess abrufen, der Windows-PATH sein sollte.

kenkh
quelle
Vielen Dank. Das ist eigentlich ein sehr unpraktisches Verhalten, zumindest wenn es mit Cygwin verwendet wird.
slhck