【CMD】環境変数のスコープ(一時設定・永続設定)

コマンドプロンプト

環境変数の設定(追加・変更・削除)に際して、setコマンドでの一時的な設定や、設定画面から行う永続的な設定など、設定方法によってそれらが反映される範囲が異なります。それぞれの詳細は以下のページで個別に記載していますが、ここでは特に環境変数の設定が反映される範囲という点に絞って整理していきます。

setによる一時的な設定について
setxや設定画面での永続的な設定について

一時的に設定された環境変数の参照可能範囲

setコマンドによる一時的な設定の場合、環境変数の設定はそのコマンドプロンプト内でのみ有効となります。コマンドプロンプトを終了すると全ての変更は破棄されます。

startコマンドを使用すると、新しく別のコマンドプロンプトを起動することができます。この時、startコマンドによって起動したコマンドプロンプトでは、setコマンドによる環境変数の設定が引き継がれます。元のコマンドプロンプトを終了した場合も、startコマンドによって起動されたコマンドプロンプト内では設定が維持され、これを終了するまで破棄されません。

一時的な設定

  • setコマンドで設定を行ったコマンドプロンプト内でのみ有効
  • startコマンドで起動したコマンドプロンプト内でも参照可能

永続的に設定された環境変数の参照可能範囲

永続的な設定の場合、設定が完了した後に起動した全てのコマンドプロンプトから参照が可能になります。設定の完了後とは、CUIの場合はsetxコマンド実行後、GUIの場合は設定画面で[OK]ボタン押下によりウィンドウを閉じた後のことを指します。

永続設定の確定後に起動した全てのコマンドプロンプトで有効

  • 永続設定の確定
    • CUIの場合 → setxコマンド実行後
    • GUIの場合 → 設定画面の[OK]ボタン押下後

設定が完了した後に”起動した”コマンドプロンプトで有効となるため、CUIで設定する場合、setxコマンドを実行したコマンドプロンプト内では変更が反映されない点に注意が必要です。setコマンドと比較すると以下のようになります。

コマンド1. 元々起動していたコマンドプロンプト2. 現在のコマンドプロンプト3. 新しく起動したコマンドプロンプト
set× 反映されない 反映される× 反映されない
setx× 反映されない× 反映されない 反映される

また永続設定の場合、ユーザー環境変数とシステム環境変数の違いもあります。ユーザー環境変数として永続設定をした場合は、設定を行ったユーザーのみ参照可能となり、システム環境変数として永続設定をした場合は、全てのユーザーから参照可能となります。システム環境変数の設定には管理者権限が必要です。

設定画面から行った場合も同様です。ユーザー環境変数の欄にはログイン中のユーザーのユーザー環境変数のみが表示されることになります。

永続的な設定

  • setxコマンドで設定した場合
    • 同じコマンドプロンプト内で設定は反映されない
    • 実行後に起動したコマンドプロンプトで参照可能
  • 環境変数設定画面で設定した場合
    • 設定の確定([OK]押下)後に起動したコマンドプロンプトで参照可能
  • ユーザー環境変数
    • 環境変数を設定したユーザーアカウントのみ参照可能
  • システム環境変数
    • PC内の全てのユーザーアカウントが参照可能
タイトルとURLをコピーしました