本稿では、Unix系オペレーティングシステム (OS) やDOS、OS/2およびMicrosoft Windowsにおける環境変数の1つであるについて解説する。には、ファイルシステム内の実行ファイルが存在するディレクトリを列挙する。通常、実行中のプロセスやごとに、別々にが設定される。
歴史 パスを検索するというアイディアは、Multics を嚆矢とする。初期のUNIXシェルでは、実行ファイルの名前検索はのみを対象として行われていた。しかし、UNIX Ver.3 になると、このディレクトリ・サイズが限界を超え、とパスの検索機能がOSに追加された。
UNIXおよびUnix系OS POSIXとUnix系OSでは、変数に対し1つ以上のディレクトリ名を、区切り文字にコロン()を用いて列挙した文字列が指定される。 文字列内のディレクトリ名に対してはエスケープ文字の処理が行われないため、その名前にコロンを含めることはできない。
ディレクトリは、通常ほとんどのユーザーのに含まれている(実装ごとの差異は存在する)。スーパーユーザーの場合、システム管理用コマンドを簡便に実行できるようとが含まれている。往々にしてユーザーの手によって、カレントディレクトリを示すドット()が挿入される。これにより、カレントディレクトリに存在するプログラムを、直接実行できるようになる。 システムアドミニストレーターは、例えばカレントディレクトリ内に何らかの手段で仕込まれた悪意あるスクリプトの実行を防ぐ目的で、内へのドットの挿入を禁止することがある。この場合にプログラムをコマンドライン上から実行するには、絶対パス()か相対パス()を用いて入力する必要がある。
ユーザーによる直接入力や、何らかのプログラムからexecシステムコールによってコマンド名が指定された場合、システムは内に記載されたディレクトリを、先頭から順番に走査して入力された名前に合致するファイル名を検索する。ファイルが見つかれば、コマンドシェルもしくはそのコマンドをコールしたプログラムの子プロセスとして、そのプログラムは実行される。
DOSやOS/2、Microsoft Windows DOSやOS/2、WindowsなどのOSでは、変数に対し1つ以上のディレクトリ名を、区切り文字にセミコロン()を用いて列挙した文字列が指定されるpath | Microsoft Learn。
通常、Windowsのシステムディレクトリ(通常は)は先頭に置かれ、続いて多くのインストールされたソフトウェア用のディレクトリが列挙される(全てではない)。cmd.exeのようなコマンドラインシェルからの起動を想定せず、Windows ExplorerのようなGUIからの起動を想定している多くのプログラムのディレクトリは、に含まれない。。一般的にDOSが利用されていた時代には、慣習的にAUTOEXEC.BATに対してやSET PATH={program directory};%PATH%といった行が追記されていた。
コマンドラインシェルからコマンドが入力されたりシステムコールによってプログラムが呼び出されたりした場合、システムは最初にカレントディレクトリを検索し、次に内を先頭から順に走査していって、与えられたコマンドと同じ名前の実行可能なファイルを探す。実行可能なファイル名には拡張子にEXEかCOMが、またバッチスクリプトではBATやが付されている。他の拡張子も実行可能ファイルとしてシステムに登録できる。
実行可能なファイルが見つかったら、システムはそれを起動するための新しいプロセスを生成する。
変数を利用することで、各々のディレクトリ(フォルダー)内に配置された日常的に使うプログラムを容易に起動できるようになる。しかし使い方を誤れば、変数の値によっては多数の場所や無効な場所をむやみに検索することになり、OSのパフォーマンス(実行速度)を低下させてしまう。
無効なディレクトリの存在は同時に実行している様々なサービスを停止させ、特にWindows Server環境内で通例他のサービスにとっての依存関係である「Server」サービスに悪影響を与える。
Windowsの環境変数には大別してシステム環境変数・ユーザー環境変数・プロセス環境変数の3つがあり、レジストリに保存されたシステム環境変数とユーザー環境変数が、プロセス起動時に合成されてプロセス環境変数になる。システムとユーザーに同じ名前の環境変数が存在する場合、ほとんどの場合はシステム環境変数よりもユーザー環境変数が優先されるASCII.jp:Windowsにおける環境変数をあらためて整理する (1/2)。ただし、に関しては内部的にシステム環境変数の後にユーザー環境変数が追加されて結合されるため、もし同じ名前の実行ファイルが複数存在する場合、探索順位としてはシステム環境変数のディレクトリにあるものが優先される【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする:Tech TIPS - @IT。
脚注 注釈
出典
関連項目 環境変数