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

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド 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 コマンドを使うとよい。