Ich verwende Cygwin unter Windows 7. Ich bin kein richtiger Windows-Benutzer, daher ist es für mich schon etwas unbequem, diese zusätzliche Ebene zwischen meinem Betriebssystem und Zsh, meiner bevorzugten Shell, haben zu müssen.
Nun muss ich meinen PATH in Windows häufig ändern. Den, den Sie über die erweiterten Systemeinstellungen ändern. Ich habe jedoch festgestellt, dass diese PATH-Änderung unter Cygwin nicht auf Zsh übertragen wird.
Also gut, ich schaue hinein .zshrc
und 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"
Das habe ich nicht hinzugefügt (na ja, vielleicht den ffmpeg
Teil am Ende). Woher kommt das? Richtet Cygwin das gleich bei der Installation von Zsh ein? Findet Oh-my-zsh das irgendwie heraus? Irgendwie muss es irgendwann meinen PATH gekannt und ihn zu meinem hinzugefügt haben .zshrc
.
DerHäufig gestellte Fragen zu Cygwinsagt,
Alle Windows-Umgebungsvariablen werden beim Start von Cygwin importiert
Aber das scheint nicht der Fall zu sein – oder die export PATH
Deklaration überschreibt .zshrc
alles, was Cygwin tut.
Ich bin natürlich sehr verwirrt. Hier ist also die Frage:
Wenn ich meinen Windows-Pfad bearbeite, was ist die empfohlene Methode, um einer Cygwin-Shell mitzuteilen, dass er sich geändert hat? Muss ich mein Shell-Profil immer manuell bearbeiten? Oder kann dies automatisch generiert werden?
Antwort1
Auf derinstall.shSkript für oh-my-zsh können Sie 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 in Ihrer Cygwin-Shell hatten (der wiederum beim Starten von Cygwin von Windows kopiert wurde), wurde während der Installation zur .zshrc-Datei hinzugefügt, wodurch diese effektiv gesperrt wurde.
Cygwin ruft diese Umgebungsvariablen beim Start ab. Anschließend werden die .zshrc-Dateien (und andere Dateien wie .zshenv) ausgeführt, wobei alle exportierten Umgebungsvariablen überschrieben werden.
Wenn Sie die Exportanweisung aus der .zshrc-Datei entfernen, übernimmt Zsh einfach den Pfad von seinem übergeordneten Prozess. Dies sollte der Pfad von Windows sein.