誰もPowershellやcmdプロンプトを再起動する必要がある理由/理由を説明できますか?
たとえば、最新のマシン状態で作業するには、次の後にPowershellを再起動する必要があります。
1)パスなどのシステム環境変数の編集
2)npmモジュールなどのインストール
3).txtなどのファイルまたはVSCodeプロジェクト内のファイルの編集
前もって感謝します!
誰もPowershellやcmdプロンプトを再起動する必要がある理由/理由を説明できますか?
たとえば、最新のマシン状態で作業するには、次の後にPowershellを再起動する必要があります。
1)パスなどのシステム環境変数の編集
2)npmモジュールなどのインストール
3).txtなどのファイルまたはVSCodeプロジェクト内のファイルの編集
前もって感謝します!
回答:
一般に、環境が変更された場合にのみシェルをリロードする必要があります。一般的には迅速で簡単であり、基本的に動作することが保証されています。しかし、それは迷惑であり、あなたの行動が厳密に必要ではないことに依存します。
CMDとPowershellは両方とも、起動時にユーザー/システム環境変数を読み取り、それらを現在のシェルに適用します。このシェル内からPATHなどの値を変更すると、新しいシェル(CMDまたはPOSH)で使用されるデフォルト値が更新されるだけで、通常は現在のシェル環境は変更されません。
PATHなどは現在のシェル内で変更できますが、CMDとPOSHでは異なる方法で行われます。これをコマンドプロンプトで実際に実行する簡単なデモを次に示します。
CMDプロンプトを開き、これらをコマンドに実行してデモをセットアップします。
C:\>mkdir c:\pathtest
C:\>echo @echo hello > c:\pathtest\sayhello.cmd
c:\ pathtestに切り替えて実行するとsayhello
、期待どおりに動作し、画面に「hello」と出力されるはずです。
C:\>cd c:\pathtest
C:\pathtest>sayhello
hello
ここで、ディレクトリをルートに戻し、sayhello
再度実行すると、コマンドが認識されないというエラーが表示されます。
C:\pathtest>cd ..
C:\>sayhello
'sayhello' is not recognized as an internal or external command,
operable program or batch file.
魔法のように、以下は現在のシェル(のみ)のPATHを更新してincludeしc:\pathtest
、sayhello
どこからでも実行できるようにします。
C:\>SET PATH=%PATH%;c:\pathtest
C:\>sayhello
hello
CMDプロンプトを閉じて、新しいプロンプトを開くと、PATHステートメントは元の値に戻り、機能しsayhello
なくなります。(c:\pathtest
今すぐ削除することもできます)。
同じことがPowershellにも当てはまります-組み込みの$ env変数を操作して、現在のセッションだけのPATHなどを変更できます。
元の質問に戻ります。
たとえば、最新のマシン状態で作業するには、次の後にPowershellを再起動する必要があります。
1)パスなどのシステム環境変数の編集
2)npmモジュールなどのインストール
3).txtなどのファイルまたはVSCodeプロジェクト内のファイルの編集
環境変数が変更された場合(PATHを変更するものをインストールするなど)、シェルを再設定するのが最も簡単な修正方法ですが、上記のように、変更内容がわかっている場合はこれを回避し、現在のシェルに手動で適用できます。
npmモジュールはファイルシステム上にあるため、PATHなどを変更している場合を除き、シェルをリロードして変更を確認する必要はありません。
上記のように、エディターで保存をクリックすると、そのデータがディスクに書き込まれます。POSH / CMDを実行すると、実行時にインタープリターによってディスクから読み取られます。
WM_SETTINGCHANGEウィンドウメッセージをリッスンするプロセスは、再起動せずに現在の環境変数を更新できます。
PowershellおよびCMDからのWM_SETTINGCHANGEを無視することは、スクリプトの実行中に環境変数が変更されないようにするためのものです。
さらに詳しい情報:
環境変数は、
ローカルシステム環境変数を更新するには、Windowsを再起動