18.8 UNIXにおけるコマンド

まず, ターミナルで, 次のコマンドを実行してみましょう.

promptdate return2 金 10 11 06:58:08 JST 2002 promptwhich date return2 /bin/date promptls -l /bin/date return2 -r-xr-xr-x 1 root wheel 19276 11 9 10:36 /bin/date

最初に date コマンドを実行し, 日付と時刻を表示しました. 次のコマンド「which date」によって, date コマンドのプログラムファイルの所在が表示されました. これから date のプログラムファイルが /bin/date にあることが分かります. 次に ls コマンドで /bin/date を確認しています. この結果, /bin/date のパーミッションは「-r-xr-xr-x」であり, 実行可能ファイルであることが分かります.

UNIX コマンドの先頭の単語, つまりコマンド名は, 実行するプログラムのファイル名に他なりません. したがって, which コマンドで表示された プログラムファイルの絶対パス名を入力しても.

prompt/bin/date return2 土 3 6 14:24:33 JST 2005

というように date プログラムが実行されます. UNIX では, コマンドとして与えられた文字列を解析して, プログラムファイルを探し, 実行する部分を, シェル (shell) と呼びます.

通常は,シェルにはプログラムファイルの絶対パス名を与えずに, 最後のファイル名だけを与えます. これは, シェルが予め登録されたディレクトリ(複数)でファイルを探すようになっているからです. このプログラムファイルを探すべきディレクトリ名の列をコマンド検索パスと呼び, 環境変数 PATH に保持されています. 次のコマンドを実行することで,

promptecho $PATH return2 /sw/fix-apple-x11/bin:/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin

/bin がコマンド検索パスに含まれているのがわかります.