whichコマンドはコマンドのパスを確認できるコマンドになります。あるコマンドを利用するときにそのコマンドのフルパスを記述する必要がある場合に利用できます。
また、簡易的にコマンドがインストールされているかどうかを確認するためにも利用できます。
whichコマンドの利用例
コマンドのフルパスを確認
whichコマンドはコマンドを引数に指定することで、現在の環境で利用されるコマンドのフルパスを表示します。コマンドは環境変数PATHから実行できるコマンドが検索されて表示されます。
コマンド例と実行結果
1 2 |
$which sed /bin/sed |
whichコマンドは環境変数PATHから実行できるコマンドを検索しているため、コマンドがインストールされて利用できるかをフルパスが表示されているかどうかで簡易的に確認することができます。
しかし、組み込みコマンドのようなコマンドは、whichコマンドでフルパスは当然ながら確認できません。
コマンド例と実行結果
1 2 |
$which help $ |
該当するコマンドのフルパスをすべて表示
(-aオプション)
-aオプションを利用すると該当するコマンドのフルパスをすべて表示します。
コマンド例と実行結果
1 2 3 |
$which -a echo /usr/local/bin/echo /bin/echo |
上の実行結果では、GNU Coreutilsをソースからビルドしたもの(/usr/local/bin/echo)とUbuntuで元々インストールされているもの(/bin/echo)が表示されています。
ソースからビルドしてインストールする等を行うと同じ名前のコマンドがインストールされる場合があります。いつも利用されるのとは別のもう一方のコマンドを利用したい場合は、
- コマンドをフルパスで利用
- 環境変数PATHの記述の順番を変更
等の方法があります。環境変数PATHの記述の順番については先に書かれているパスのコマンドの方が優先されて利用されます。
コマンド例と実行結果
1 2 3 4 |
$which echo /usr/local/bin/echo $PATH=/bin:/usr/local/bin which echo /bin/echo |
変数の割り当てをコマンドと一緒に利用すると、現在のシェルの環境に影響を与えずに、環境変数を追加しそのコマンドを利用できます。