コマンド
where
コマンドのフルパスを表示。csh・tcsh 内部コマンド
あるコマンドを打ったとき、実際にどのコマンドが実行されるのかを、エイリアス、ビルトイン、パスを元にして調べて、それらの全てを(実際は実行されないものまで)表示する。一方、which は最初に見付かったものだけを表示する。
思ったようなコマンドが実行されない場合、where コマンドで変な alias が設定されていないか、意図したパスのプログラムが実行されているかを調べるとよい。
単に「perl」とタイプしたときに実行されるプログラムを調べるには
% where perl
/usr/local/bin/perl
/usr/bin/perl
とする。この場合、パスの設定で /usr/bin より /usr/local/bin が先にきているので、/usr/local/bin/perl が実行されるわけである。
% where jman
jman is aliased to env LANG=ja_JP.EUC jman
/usr/local/bin/jman
これは事前に
% alias jman "env LANG=ja_JP.EUC jman"
と設定しているので、/usr/local/bin/jman より alias の設定が優先されたわけである。
% where echo
echo is a shell built-in
/bin/echo
echo コマンドは、/bin/echo の他に、シェルの内部コマンドとしても用意されている。一般コマンドより、内部 (built-in) コマンドの方が優先される。
一方、which コマンドは
% where perl
/usr/local/bin/perl
% where jman
jman: aliased to env LANG=ja_JP.EUC jman
% where echo
echo: shell built-in command.
のように、実際に実行されるコマンドのみを表示する。
●関連コマンド
where コマンドは csh・tcsh の内部コマンドである。sh・bash の場合、type コマンドを使うとよい。