検索
連載

【Windows 10/11】Path環境変数の設定で「あのコマンド、どこだっけ?」をなくす、Windows効率向上の最強テクニックTech TIPS

Windows 10やWindows 11でよく使うコマンドやツールなどがあるなら、それらをまとめて1つのフォルダに保存しておき、そのパスを「Path」という環境変数に追加しておくとよい。Path環境変数をGUIで設定/編集する手順と注意点を詳しく紹介する。

Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

コマンドを実行する「Path」って、この画面で設定すればいいんだよね。あれ、Pathが2つある…… どうすればいいの?

対象:Windows 10/Windows 11


 コマンドプロンプトを開いて作業することが多いユーザーなら、よく使うコマンドや、自分で作成したツールなどをどこかのフォルダにまとめて管理しているのではないだろうか。そのような場所に保存されているコマンドを起動したい場合、「Path」という環境変数にフォルダの場所をセットしておけば、わざわざフルパス名を指定しなくても簡単に呼び出せるようになる。

 例えば、「D:\MyCommand」フォルダにコマンドが保存されているとすると、Path環境変数にこの場所をユーザーが自分で追加しておけば、カレントフォルダの場所がどこであっても、「D:\MyCommand\mybatch.cmd」ではなく、単に「mybatch」と入力するだけでコマンドを起動できる。

 このPath環境変数の値を設定する方法は幾つかある。そのうち本Tech TIPSでは、Windows 10/11を対象として、GUIで設定する方法を紹介する。コマンドプロンプトで設定する方法については、Tech TIPS「setxで環境変数の値を設定する(基本編)」を参照していただきたい。

Path環境変数の基本

 具体的な手順を説明する前に、まずはPathの仕組みについて簡単に説明しよう。

 Pathには複数のフォルダのパスを「;」(セミコロン)で区切って列挙できる。同じ名前のコマンドが複数のフォルダ中に存在する場合は、Path環境変数の先頭の方にあるフォルダが優先される。実際にどのファイルが実行されているかは、Tech TIPS「ファイルが見つからない? ならば『where』コマンドで検索だ」で紹介しているwhereコマンドなどを使えば確認できる。

 Path環境変数はユーザーごとにそれぞれ異なる値を設定できる。通常は、システム全体で共通のPathの値に、ユーザーごとのPathの値を結合して利用する。

 コマンドの起動方法やPath環境変数の制限などについては、次の記事も参照していただきたい。

手順1――環境変数の設定画面を表示させるには

 Path環境変数を設定するには、まず以下の手順で[環境変数]ダイアログを開く。

環境変数の設定画面を表示させる(1/3)
環境変数の設定画面を表示させる(1/3)
入力している「env」は「environment(環境)」を意味する。
環境変数の設定画面を表示させる(2/3)
環境変数の設定画面を表示させる(2/3)
環境変数の設定ダイアログは、この[システムのプロパティ]ダイアログから呼び出せる。
環境変数の設定画面を表示させる(3/3)
環境変数の設定画面を表示させる(3/3)
サインイン中のユーザーだけに作用する「ユーザー環境変数」と、システム全体(全ユーザー)に作用する「システム環境変数」の両方に、Pathが存在するはずだ。

■操作手順

  1. タスクバーの検索ボックスまたは検索アイコンをクリックして、「env」と入力して検索する
  2. 検索結果の候補一覧から「システム環境変数の編集」をクリックする。ここで「環境変数の編集」を選んだ場合、ユーザー環境変数だけが編集可能で、システム環境変数は編集できないので注意が必要だ

 意図した画面が開かない場合は、Tech TIPS「コントロールパネルの[システム](相当)や[システムのプロパティ]を素早く開く方法」を参照していただきたい。

●「ユーザー環境変数」と「システム環境変数」の違い

 Path環境変数には、ユーザーごとに固有の「ユーザー環境変数」と、システム全体で共通の「システム環境変数」の2つがある。ユーザーがシステムにサインインすると、この2つが結合されて(内部的には、システム環境変数Pathの後ろに、ユーザー環境変数Pathの内容が追加される)、これがコマンドプロンプトやアプリケーションなどに渡されることになる。

 一般的には、ユーザー環境変数のPathを変更すればよいだろう。しかし同じPCにサインインする複数のユーザーやアプリケーション、タスクなどで1つのコマンドフォルダを共有したい場合はシステム環境変数側のPathを編集する。

手順2――Path環境変数にパスを追加するには

 編集したい方のPath変数を選んでからダブルクリックするか、[編集]ボタンをクリックすると、次のような編集画面が表示される。

Path環境変数を編集する
Path環境変数を編集する
Pathに新しいパスを追加したり、優先度(検索順位)を変更したり、不要なエントリを削除したりできる。

 新しいフォルダのパスを追加するには[新規]ボタンをクリックするか、空行の部分をダブルクリックする。するとパスの入力欄が表示されるので、そこに直接フルパス名を手動で入力するか、[Ctrl]+[V]キーでパスのテキストを貼り付ける。

 GUIでフルパスを指定したいなら、右にある[参照]ボタンをクリックして[フォルダーの参照]ダイアログを表示させればよい。

新規パスの追加
新規パスの追加
新しいパスを追加すると末尾に置かれるので、必要に応じて優先度を変更する。

 この画面を使って入力する場合、パスの末尾にセミコロンを付ける必要はない。追加したいパスを、1行に1つずつ書いていく。

 追加したパスもしくは既にあるパスの内容を修正するには[編集]ボタンを、削除するには[削除]ボタンをそれぞれクリックする。

 新規に追加したパスは必ず末尾に置かれるので、優先度を上げたければ[上へ]ボタンをクリックして移動させる。あるいは既存のパスを選んで[下へ]ボタンをクリックして、新規追加したパスより優先度を下げてもよい。前述の通り、上にある方が検索の優先度は高くなるし、ユーザー環境変数よりもシステム環境変数の方が先に検索される。

●Path以外の環境変数の編集について

 上記の入力編集画面は、フルパス名を2つ以上列挙するタイプの環境変数を選択すると自動的に表示される。そうでない(内容が複数のフルパス名でない)環境変数の場合や、上の画面で[テキストの編集]ボタンをクリックした場合は、以下のようにシンプルな入力画面が表示される。

Path以外のパスの編集
Path以外のパスの編集
複数のフルパス名をセミコロンで区切ったもの以外の環境変数だと、このようなダイアログで編集する。

 このダイアログにある[ディレクトリの参照][ファイルの参照]ボタンを使うと、追加または変更したいファイルやフォルダのフルパスを間違いなく設定できる。

●ユーザーとシステムの両方に同名の環境変数がある場合、その値はどうなる?

 デフォルトで設定されている「TMP」「TEMP」環境変数のように、ユーザー環境変数とシステム環境変数の両方で同じ名前の変数を定義した場合、まずシステム環境変数が設定された後、ユーザー環境変数が設定される。これにより、結果的にはユーザー側の設定が優先されているように見える。システム環境変数側のみを利用したい場合は、ユーザー環境変数側の同名の変数を削除するとよい。

 ただしPath環境変数の場合は例外で、前述のようにシステム側のPath設定の末尾に、ユーザー側のPath設定が追加される。

手順3――Path設定後の反映と確認をするには

 環境変数の値や優先度などの設定が完了したら、[OK]ボタンを押して、「環境変数」ダイアログを閉じる。もし設定を間違えたり、削除してしまったりした場合は、[OK]ではなく、[キャンセル]ボタンを押すと、何も変更されずに終了する。

 変更したPath環境変数を確認するには、新たにコマンドプロンプトを起動し、「path」コマンドを実行する。以下のようにPath環境変数の内容が表示される。システム環境変数Pathの内容に続いて、ユーザー環境変数Pathの内容が列挙されているはずだ。

設定されたPath環境変数
設定されたPath環境変数
Pathの値は「set path」や「path」コマンドで確認できる。システム設定とユーザー設定の結果が両方結合されて表示されている。

 Pathが長い場合、「path」コマンドの出力は分かりにくく、対象のパスを探し出すのが難しい。そのような場合は、次のコマンドラインを実行してみよう。

powershell $ENV:Path -split ';'


 このコマンドは、PowerShellを起動してPath環境変数の内容を「;」(セミコロン)で分割し、1行ずつ表示する。これにより、Pathに設定されている各フォルダのパスが見やすくなる。

【注意】既に起動済みのコマンドプロンプトなどにはPathの変更が反映されない

 注意が必要なのは、環境変数の設定が完了しても、その結果は既に起動中のアプリケーションやプロセス、コマンドプロンプトなどには反映されない、という点だ。環境変数を変更したら、コマンドプロンプトやアプリケーションなどをいったん閉じてから再実行すること。

 特にシステム環境変数の値を変更した場合は、一度サインアウトして再サインインしたり、場合によってはシステムを再起動したりするまで反映されないものもある。

 その例として、システム環境変数の「TMP」「TEMP」が挙げられる。例えば、起動時に作成される幾つかのログファイルは、「TMP」「TEMP」で指定された場所に作成される。そのため、これらのシステム環境変数を変更して、Windows OS自身が使う一時ファイルの保存場所を変更させた場合、正しく有効化にするにはシステムの再起動が必要になる。

別の環境変数を間接参照してPathを設定すると便利

 上記の例では、Path環境変数にドライブ名から始まるフルパス名を直接指定している。しかし、場合によっては他の環境変数を使うと便利なことがある。

 例えば、OneDriveなどのクラウドドライブ上に「\Command」というフォルダを作成して、この中にコマンドを保存しているとしよう。この場合、PCのドライブ内に同期されているOneDriveのフォルダのパスが、「OneDrive」という環境変数に自動で設定される。そこでPath環境変数に「%OneDrive%\command」という値を追加しておくと、ユーザーフォルダの場所やドライブの構成などが変わっても、どのPC上でも同様に\Commandフォルダ内のコマンドを実行できるようになる。

 この場合、前述の[環境変数]画面やPathコマンドの結果では、OneDrive環境変数の値が展開されて表示される。しかし、Path環境変数を設定する[環境変数名の編集]画面では、元の「%OneDrive%\command」という文字列のまま編集できる。

 環境変数を使う方法以外にも、例えばシンボリックリンクやジャンクションを使って、どのPCでも共通になるようなパスを作成しておき、それをPath環境変数に設定するという方法もある(以下の記事参照)。

 この間接参照のテクニックは、Path以外の環境変数にも応用できる。例えば、「LIB」という環境変数を、以下のようにシステム側とユーザー側の双方に設定したとする。

  • システム側: 「c:\systemlib;c:\commonlib;
  • ユーザー側: 「%LIB%;%USERPROFILE%\mylib

 「USERPROFILE」という環境変数には、サインイン中のユーザーのプロファイルフォルダ(デフォルトでは「C:\Users\ユーザー名」)が格納されている。仮に「TestUser」というユーザーアカウントでサインインしていた場合、実際のLIB環境変数の内容は以下のようになる。

LIB=c:\systemlib;c:\commonlib;;C:\Users\testuser\mylib;



 このようにすることで、Path以外の環境変数でも、全ユーザー共通の内容を設定しつつ、ユーザーごとの個別の内容も追加できるようになる。

【注意】意図した順序で実行されないのは「アプリ実行エイリアス」のせいかも

 Windows 11で、バージョンの異なる複数の実行ファイルがインストールされている場合、いくらPath環境変数でパスの順序を変えても、意図した実行ファイルが起動されないことがある。

 それは「アプリ実行エイリアス」が原因かもしれない。

 多くのストアアプリは、.exeファイルとは異なる実行ファイル形式を採用しているせいで、そのままだとコマンドプロンプトなどからコマンドとして実行できない。そこで「アプリ実行エイリアス」という機能により、あたかも.exeファイルが存在するかのように見せることで、コマンドプロンプトからでも起動できるようにしている。

 アプリ実行エイリアスは、「設定」アプリの[アプリ]−[アプリの詳細設定]−[アプリ実行エイリアス]で設定できる。ここで意図通りの順序で実行できない実行ファイルを探してみて、もし見つかったらスイッチを「オフ」にして、このアプリのアプリ実行エイリアスを無効化してから、再度実行を試してみよう。

 この問題はMicrosoft Storeで配布されているPythonをインストールしている場合によく発生していたようだ。

■更新履歴

【2025/09/17】「システムのプロパティ」ダイアログを呼び出す手順を刷新しました。コマンドプロンプトでPath環境変数の内容を整理して表示させる方法を追記しました。アプリ実行エイリアスについて追記しました。

【2021/12/15】Windows 11に対応しました。

【2018/05/11】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.