UNIX/Linuxの部屋 whereコマンドの使い方


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド 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.
のように、実際に実行されるコマンドのみを表示する。

sh・bash の場合、type コマンドを使うとよい。


頑張って書いたおすすめコンテンツ!