PATH (変数)

本稿では、UNIX系OSや 、OS/2 および Microsoft Windows における環境変数の一つであるについて解説する。には、ファイルシステム内の実行ファイルが存在するディレクトリを列挙する。通常、実行中のプロセスやごとに、別々にが設定される。

歴史 

パスを検索するというアイディアは、Multics を嚆矢とする。初期のUNIXシェルでは、実行ファイルの名前検索はのみを対象として行われていた。しかし、UNIX Ver.3 になると、このディレクトリ・サイズが限界を超え、とパスの検索機能がOSに追加された。

UNIX および UNIX系OS 

POSIX とUNIX系OSでは、変数に対し一つ以上のディレクトリ名を、区切り文字にコロン（）を用いて列挙した文字列が指定される。
文字列内のディレクトリ名に対してはエスケープ文字の処理が行われないため、その名前にコロンを含めることはできない。

ディレクトリは、通常ほとんどのユーザーのに含まれている（実装ごとの差異は存在する）。スーパーユーザーの場合、システム管理用コマンドを簡便に実行できるようとが含まれている。往々にしてユーザーの手によって、カレントディレクトリを示すドット（）が挿入される。これにより、カレントディレクトリに存在するプログラムを、直接実行できるようになる。
システムアドミニストレーターは、例えばカレントディレクトリ内に何らかの手段で仕込まれた悪意あるスクリプトの実行を防ぐ目的で、内へのドットの挿入を禁止することがある。この場合にプログラムをコマンドライン上から実行するには、絶対パス（）か相対パス（）を用いて入力する必要がある。

ユーザーによる直接入力や、何らかのプログラムからexecシステムコールによってコマンド名が指定された場合、システムは内に記載されたディレクトリを、先頭から順番に走査して入力された名前に合致するファイル名を検索する。ファイルが見つかれば、コマンドシェルもしくはそのコマンドをコールしたプログラムの子プロセスとして、そのプログラムは実行される。

DOS や OS/2、Microsoft Windows 

DOS や OS/2、MS WindowsなどのOSでは、変数に対し一つ以上のディレクトリ名を、区切り文字にセミコロン（）を用いて列挙した文字列が指定される。

通常、Windows のシステムディレクトリ（通常は）は先頭に置かれ、続いて多くのインストールされたソフトウェア用のディレクトリが列挙される（全てではない）。コマンドプロンプトからの起動を想定していない多くのプログラムのディレクトリは、に含まれない。プログラムの中には、インストールの際に自分のディレクトリを変数の先頭に置き、名前検索のスピードアップやOSのコマンドの無効化を意図するものもあった。一般的にDOSが利用されていた時代には、慣習的にAUTOEXEC.BATに対してやSET PATH={program directory};%PATH%といった行が追記されていた。

コマンドプロンプトからコマンドが入力されたりシステムコールによってプログラムが呼び出された場合、システムは最初にカレントディレクトリを検索し、次に内を先頭から順に走査していって、与えられたコマンドと同じ名前の実行可能なファイルを探す。実行可能なファイル名には拡張子にEXEかCOMが、またバッチスクリプトではBATやが付されている。他の拡張子も実行可能ファイルとしてシステムに登録できる。

実行可能なファイルが見つかったら、システムはそれを起動するための新しいプロセスを生成する。

変数を利用することで、各々のフォルダ内に配置された日常的に使うプログラムを容易に起動できるようになる。しかし使い方を誤れば、変数が肥大するごとに、OSは数多くのディレクトリ（無効なものも含む）を検索する必要に迫られ、実行速度が低下することになる。
無効なディレクトリの存在は同時に実行している様々なサービスを停止させ、特にWindows Server環境内で常時数多くのサービスに依存しているサービスに悪影響を与える。

出典 

OSのファイルシステム