シェルはユーザからコマンドラインを解析して起動するプログラムを決定したならば そのコマンドを環境変数 PATHが示すディレクトリ・リストから探します。 この PATHはログイン時に自動的に設定されます。 PATHを始めとする環境変数はechoコマンドで次のようにすれば、 その内容を見ることができます。
環境変数 PATHの前にドル記号$ echo $PATH /bin:/usr/bin::
$
を置いてやるとシェルはその部分を
環境変数 PATHに格納されている内容で置換してからechoに引数として与えます。
この場合は "/bin:/usr/bin::" がコマンド探索用のディレクトリ・リストになります。
PATHの示すディレクトリ・リストはそれぞれのディレクトリをコロン : で区切っ て表されます。コマンドの実行が指示されたならばシェル は "/bin" "/usr/bin" " " の順にディレクトリから指定 されたコマンドを探します。このディレクトリ・リストの最初の2つは 文字の通りの場所です。3番目の " " はカレントディレクトリ "./" を意味しています。 今まで頻繁に使ってきたechoコマンドは/usr/binにありますから、 コマンドが入力されるたびに シェルはこれらのディレクトリ・リストを参照して探していたわけです。
コマンドラインでコマンド名にパスを含めた指定をするとシェルは PATHの示す ディレクトリ・リストを無視して直接指定されたコマンドをだけを探します。例えば、
とすると、シェルは PATHの内容を無視して/bin/dateを実行させます。 このような絶対パスだけでなく、カレントディレクトリからの相対パスを指定しても 同様に環境変数 PATHの内容は無視されます。$ /bin/date