which コマンドの実行ファイルの場所を表示する
which [オプション] コマンド名...試してみる
which lsls を実行したときに使われるファイルの場所を表示します。
which ls cat grep複数のコマンドを一度に調べます。
which -a ls-a を付けると、PATH の中にある一致をすべて表示します。
echo $PATHwhich が探す場所のリストです。コロンで区切られています。
PATH=$PATH:/home/user/bin which mytoolPATH に追加したディレクトリの中のコマンドも見つかります。
which nosuchcommand || echo "見つかりません"見つからないと終了コードが1になります。ここでは || echo で表示を出しています。
主なオプション
-a | 最初の1つだけでなく、PATH の中の一致をすべて表示する |
|---|
解説
何をするコマンドか
which は、環境変数 PATH に書かれたディレクトリを順に探し、最初に見つかった実行ファイルの場所を表示します。コマンドを実行したときに、実際にどのファイルが動くのかを確かめられます。同じ名前のコマンドが複数あって、思った方が動かないときの調査に使います。
見つからないとき
見つからないと、何も表示せず、終了コード1で終わります。スクリプトでコマンドがあるかの確認に使えます。
which が分からないもの
which が調べるのは、PATH にある実行ファイルだけです。cd や type のようなシェルの組み込みコマンドや、シェルのエイリアス・関数は、実行ファイルが別にないかぎり表示されません。それらも含めて調べたいときは type を使います。
似たコマンドとの違い
| コマンド | 調べるもの |
|---|---|
which |
PATH の中の実行ファイル |
type |
組み込み、エイリアス、関数、実行ファイルのどれか |
whereis |
実行ファイル、マニュアル、ソースの場所 |