PATHの変更が認識されないのはなぜですか?


36

組み込みの環境変数ダイアログまたはPath Editorなどを使用してPATHを更新し、コマンドプロンプトを開くと、コマンドプロンプトがどこにあったかによって、PATHへの変更がコンソールに登録されませんから始まった。

たとえば、PATHを編集してから、[スタート]メニューまたはデスクトップのショートカットからcmd.exeを起動すると、PATHは正常に見えます。正常に更新されました。私はどこでもショートカットからCMD.EXEを起動する場合は、他のスタートメニューやデスクトップよりも、新しいPATHは読まれませんし、私が代わりに古いパスを取得します。とても奇妙です。

デスクトップのショートカットからコマンドプロンプトを実行しようとしましたが、正常に動作します。次に、まったく同じショートカットをデスクトップ上のサブフォルダーにコピーすると、更新されないPATHの問題が発生します。

これを説明するのは非常に難しいことを理解しているので、この問題を実際に示すスクリーンキャストを作成しまし

そのスクリーンキャストに見られるコマンドプロンプトショートカットのスクリーンショットは次のとおりです。

コマンドプロンプトのショートカット設定

これは、Windows Vista Home Premium SP2上にあります。

回答:


30

新しいプロセス(新しいコマンドラインなど)を開始すると、そのプロセスを開始しているプロセスから環境変数が取得されます。パスが更新されると、更新を実行するプロセスのみがそれが変更されたことを知ることができ、設定はユーザーが設定ごとにログオンし直すか、システム全体の設定を再起動するまで反映されません。


2
ただし、メインexplorerプロセスはレジストリの環境の変更を検出し(ダイアログボックスはに属しますrundll32)、独自の環境を自動的に更新します。(少なくともXPではそうです。)これがcmd、ショートカットから開始したときに変更が見える理由です。
-grawity

ローランド、これは、これがなぜ起こったのかを正確にトラブルシューティングするのに十分な情報を私に提供しましたが、私の質問には完全には答えませんでした。詳細については、自分の答えを参照してください。ありがとう!
チャールズローパー

この答えをありがとう!私がしなければならなかったのは、コマンドプロンプトを閉じて再度開くことだけでした。
user1477388 14

これが私にとっての解決策でした!マルチタブラッパー(ConEmu)内でGit Bash for Windowsを使用していますが、なぜ機能しecho $PATHないのか疑問に思いました。新鮮だと思いましたが、Git BashのすべてのタブとConEmuを閉じるまで、正しく表示されませんでした。
オリヴウティロ

27

Rowlandが提案するように、新しいプロセスを開始するとき、それはそれを開始しているプロセスから環境変数を読み取ります。そのため、スタートメニューまたはデスクトップからコマンドプロンプトを起動すると、環境変数が読み取られ、そこからexplorer.exegrawityが示唆するように、レジストリの環境設定への変更が検出されるため、コマンドプロンプトに新しいPATHが表示されますデスクトップまたはスタートメニュー。

投稿したスクリーンキャストでPATHの更新が表示されない理由は、親プロセスを作成するFARRを使用して最初にエクスプローラーウィンドウを起動FindAndRunRobot.exeたためです。FARRは環境の変化を自動的に検出しないため、そこから生成される子プロセスは新しいPATHを取得しません。また、Explorerで[ 別のプロセスでフォルダーウィンドウを起動する]オプションを設定しました。これは、FARRの最初のウィンドウに続いてFARRの子も開いたすべてのexplorer.exeウィンドウを意味します

消灯「とは独立したプロセスでのウィンドウのフォルダの起動オプション」、新しいexplorer.exeプロセスが私の問題を解決しFARR、下に作成されていません。ただし、コンソールウィンドウなどもFARRから直接起動します。これらは古い環境設定も取得します。FARRを再起動すると、新しい環境設定が伝達されます。

これは、FARRから生成されたプロセスを示すProcess Explorerのスクリーンショットです。explorer.exeFARRを再起動しない限り、これらのプロセスはいずれも最上位から新しい環境設定を受け取りません。

プロセスエクスプローラー


3
なぜ私の答えが投票されなかったのですか?欠陥がある場合はお知らせください。修正を試みます。
チャールズローパー

とても理にかなっています。
lwpro2 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.