はじめに
Linuxのコマンドラインでls
やgrep
といったコマンドを実行すると、システムは $PATH
という環境変数に設定されたディレクトリの中から、そのコマンド名に一致する実行ファイルを探し出して起動します。では、実際にどのディレクトリにあるファイルが実行されているのでしょうか?
その疑問に答えてくれるのが**which
**コマンドです。このコマンドは、指定されたコマンド名に対応する実行ファイルのフルパスを、$PATH
に沿って検索し、見つけた最初のパスを表示します。
LPICレベル1の試験でも、$PATH
の仕組みと、which
コマンドを使った実行ファイルの特定は重要な項目です。この記事では、which
コマンドの基本的な使い方から、コマンド名の由来、そしてLPIC対策として押さえるべきポイントまでを詳しく解説していきます。
whichコマンドの基本
まずは、which
コマンドの基本的な使い方と、よく使うオプションから見ていきましょう。
whichコマンドの書式
which [オプション] コマンド名...
ポイント: 1つまたは複数のコマンド名
を指定するだけで、そのコマンドの実行ファイルのフルパスが表示されます。
主要オプション一覧
オプション | 意味 | 補足 |
-a | $PATH 内にある全てのパスを表示 | all |
コマンド名の由来:なぜ「which」なのか?
which
コマンドの「which」は、英語で “どちらの?” や “どの?” という意味を持つ疑問詞です。
このコマンドの目的は、$PATH
環境変数に複数のディレクトリが設定されている状況で、指定したコマンドが「どのディレクトリにある実行ファイルなのか?」という問いに答えることにあります。システムは $PATH
の先頭から順番にディレクトリを検索するため、which
もこの検索順序に従って、見つかった最初の実行ファイルのパスを返します。
この直接的な命名は、ユーザーの疑問を解決するツールとしての役割を明確に表しています。
各オプションの詳細と実践例
ここからは、which
コマンドの各オプションや、$PATH
との関係について詳しく掘り下げていきます。
$PATHとwhichの関係
which
コマンドは、$PATH
環境変数に設定されているパスを検索して、コマンドの実行ファイルを探します。$PATH
は、コロン :
で区切られたディレクトリのリストです。
実践例:
ls
コマンドのパスを表示:
which ls
出力例:

$PATH
環境変数の内容を確認:
echo $PATH
出力例:

which ls
は、このリストを左から順に検索し、/usr/bin
ディレクトリでls
という実行ファイルを見つけ、そのパスを出力します。
-a (all) オプション:全てのパスを表示
意味: $PATH
内に指定したコマンド名と一致する実行ファイルが複数存在する場合、見つかった全てのパスを表示します。このオプションがない場合、最初に見つかったパスのみが表示されます。
実践例: ls
という名前の実行ファイルが複数ある場合、その全てを表示します。
which -a ls

オプションの由来:「-aオプションのaは、all(全て)の頭文字から来ています。デフォルトの挙動(最初に見つかったものだけを表示)とは異なり、$PATH内にある可能性のある全ての候補を確認したいというニーズに応えるために導入されました。」
まとめ
今回は、Linuxコマンドの実行ファイルを特定するためのwhich
コマンドについて、その基本的な使い方からコマンド名の由来、そして主要オプションまでを詳しく解説しました。which
コマンドを理解することは、$PATH
環境変数の仕組みや、シェルがどのようにコマンドを探しているのかを深く理解するために非常に重要です。
LPICレベル1の試験対策としてはもちろん、コマンドの実行パスを確認したい場合や、$PATH
の設定をデバッグする際にも、which
コマンドは不可欠なツールです。ぜひ、日々のLinux作業でこのコマンドを積極的に活用してください。
コメント