我是否必須在 Cygwin shell 中手動更新 PATH?

我是否必須在 Cygwin shell 中手動更新 PATH?

我在 Windows 7 上使用 Cygwin。

現在,我經常需要更改 Windows 中的 PATH。您可以透過進階系統首選項進行變更。但是,我注意到這個 PATH 變更不會傳播到 Cygwin 下的 Zsh。

很好,所以我查看了一下.zshrc,發現:

# 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"

我沒有添加這一點(好吧,也許是ffmpeg最後的那一點)。它從何而來? Cygwin 在安裝 Zsh 時最初是否設定了這個? Oh-my-zsh 能以某種方式解決這個問題嗎?不知何故,它一定在某個時刻知道我的 PATH 並將其添加到我的.zshrc.

CYGWIN 常見問題解答說,

Cygwin 啟動時會匯入所有 Windows 環境變數

但情況似乎並非如此,或者export PATH說 中的聲明.zshrc會涵蓋 Cygwin 所做的任何事情。

不用說,我很困惑。所以這是問題:

當我編輯 Windows 路徑時,建議使用什麼方式告訴 Cygwin shell 它已更改?我是否需要始終手動編輯我的 shell 設定檔?或是可以自動生成嗎?

答案1

安裝.shoh-my-zsh 的腳本你可以看到這個:

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

Cygwin shell 上的 PATH(在啟動 Cygwin 時從 Windows 複製)在安裝過程中新增至 .zshrc,從而有效地鎖定它。

Cygwin 在啟動時取得這些環境變量,然後執行 .zshrc(以及其他文件,例如 .zshenv),覆蓋任何匯出的環境變數。

如果您從 .zshrc 中刪除了導出語句,Zsh 只會從其父進程中取得 PATH,路徑應該是 Windows 的 PATH。

相關內容