Cygwin シェルで PATH を手動で更新する必要がありますか?

Cygwin シェルで PATH を手動で更新する必要がありますか?

私は Windows 7 で Cygwin を使用しています。私は Windows ユーザーではないので、OS と私が好んで使用しているシェルである Zsh の間にこの追加レイヤーが必要なのは、私にとってはすでに少し不便です。

現在、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の宣言によって、.zshrcCygwin が行うすべての処理が上書きされます。

言うまでもなく、私は非常に混乱しています。そこで質問です。

Windows PATH を編集する場合、変更があったことを Cygwin シェルに通知する推奨方法は何ですか? シェル プロファイルを常に手動で編集する必要がありますか? それとも、自動生成できますか?

答え1

上のインストールoh-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 シェル上の PATH (Cygwin を起動したときに Windows からコピーされたもの) は、インストール中に .zshrc に追加され、事実上ロックされます。

Cygwin は起動時にこれらの環境変数を取得し、.zshrc (および .zshenv などの他のファイル) を実行して、エクスポートされた環境変数を上書きします。

.zshrc から export ステートメントを削除すると、Zsh は親プロセスから PATH を取得するだけになります。これは Windows の PATH である必要があります。

関連情報