|compphys|

コマンドパスとは何か?
皆さんがコンパイルして作った実行ファイルを実行するときには、./a.out と打ち込まなければいけません。なぜ、実行ファイル名である a.out の前に、よけいな ./ が必要なのでしょう?

UNIX の中では、いろいろな場所にコマンドや実行ファイルが収納されています。そして、どこにどんなコマンドが収納されているか、あらかじめ(個人の環境設定ファイルに)登録しておく必要があるのです。
例えば、コマンドラインから which muleと入力してみて下さい。 /usr/local/bin/mule と出てくると思います。これは、mule というコマンドは /usr/local/bin/ というディレクトリに格納されているという事を示しているのです。そして、この/usr/local/bin/は皆さんのコマンドパスとしてあらかじめ登録されているので、単に mule と打ち込むだけで mule が起動するようになっていたのです。
逆に言えば、各人のホームディレクトリは、コマンドを収納するディレクトリとして登録されていないために、わざわざ ./a.out などと書いて、コマンドの場所を UNIX に教える必要があったのです。


コマンドパスを追加する
それでは、各人のホームディレクトリーをコマンドパスに登録してみましょう。
mule を立ちあげて .tcshrc というファイルを開いて下さい。
上から何行目かに、 set path で始まる次のような行があるはずです。これがコマンドパスを定義している文章です。
set path=(/usr/local/bin /bin/posix /bin /usr/bin /usr/ucb /usr/bin/X11/3050/bin /usr/gnu/bin /usr/local/canna/bin /usr/local/bin/mh /usr/lib/splus /usr/lib/sas609)
set path の右辺の括弧内の一番最初に". "(ピリオドとスペース)を追加して下さい、,(コンマ)ではありません。このピリオドは「自分が今いるディレクトリー」を表しています。
set path=(. /usr/local/bin /bin/posix /bin /usr/bin /usr/ucb /usr/bin/X11/3050/bin /usr/gnu/bin /usr/local/canna/bin /usr/local/bin/mh /usr/lib/splus /usr/lib/sas609)
どうですか、上のように修正できたでしょうか?
念のために書いておきますが .tcshrc の他の部分は変更したり削除したりしないで下さい。
ピリオド一つだけなので見かけはほとんど変化したように見えませんが、これで各人のディレクトリーをコマンドパスに登録することが出来ました。

あとは、コマンドラインから

x0000% source .tcshrc
と打ち込むことで新しいパスが有効になります。

(ただし、一旦ログアウトして再びログインした場合に この設定を自動的に有効にするためには、 .login(ドット login) ファイルも同様に書き換える必要があります。)

これで今度からは実行ファイルを実行するときに

x0000% ./a.out
としなくても(もちろん、上記のように打っても一向に構わないのですが)
x0000% a.out
と、実行ファイル名を入力するだけで実行することが出来るようになりました。