はじめに
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作業でこのコマンドを積極的に活用してください。



コメント