このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
新Linuxコマンド演習32

新Linuxコマンド演習32 概要
「新Linuxコマンド演習32」では、whichコマンド を使用して、Linux上でコマンドの実行ファイル(プログラム本体)がどこにあるのかを確認する方法を学びます。
whichコマンドは、指定したコマンド名に対応する実行ファイルが どのディレクトリに存在するか を検索して表示します。
シェルがコマンドを実行する際に、環境変数PATH に登録されたディレクトリを上から順に検索する仕組みを理解することで、Linuxのコマンド実行の流れをより深く理解できるようになります。

whichコマンドの基本
| 項目 | 内容 |
|---|---|
| コマンド名 | which |
| 主な用途 | 指定したコマンドの実行ファイル(パス)を表示する。 |
| 主なオプション | -a:複数の一致するパスをすべて表示する --skip-dot:カレントディレクトリを検索対象から除外する。 |
| 関連コマンド | type、whereis、command -v |
| 注意点 | which は外部コマンドであり、PATHに依存して検索するため、PATHの設定が異なると結果も変化する。 |
解説
Linuxでは、ユーザーが入力したコマンドを実行する際に、シェルは「環境変数PATH」に登録されているディレクトリを 左から順に 探し、最初に見つかった実行ファイルを実行します。
whichコマンドは、この検索の結果をそのまま確認するための便利なツールです。
演習問題+模範解答例
演習01:コマンドのパスを表示する
問題
ping コマンドの実行ファイルがどのディレクトリにあるかを確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ which ping
/usr/bin/ping解説
- whichコマンドは、環境変数PATHに登録されたディレクトリを順に検索し、最初に見つかった実行ファイルを表示します。
- AlmaLinuxでは、pingコマンドは通常 /usr/bin に配置されています。
- これにより、「ping」がどのディレクトリの実行ファイルを参照しているかを確認できます。
演習02:複数のパスを表示する(-aオプション)
問題
ping コマンドの実行ファイルが複数存在する場合、それらすべての場所を確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ which -a ping
/usr/bin/ping
/usr/sbin/ping解説
- -a オプションを指定すると、該当するコマンドが複数のディレクトリに存在する場合、すべての一致パス を表示します。
- AlmaLinuxでは /usr/bin/ping と /usr/sbin/ping の両方に存在する場合がありますが、
実際には同じファイルを指すシンボリックリンクであることが多いです。
確認するには以下のようにします。
[suzuki@AlmaLinux ~]$ ls -l /usr/bin/ping /usr/sbin/ping
-rwxr-xr-x. 1 root root 78344 10月 12 09:11 /usr/bin/ping
lrwxrwxrwx. 1 root root 11 10月 12 09:11 /usr/sbin/ping -> ../bin/ping→ /usr/sbin/ping は /usr/bin/ping へのリンクであることが分かります。
演習03:環境変数PATHを確認する
問題
コマンドの検索順序に影響を与える環境変数PATHの内容を確認してください。
模範解答例
[suzuki@AlmaLinux ~]$ printenv PATH
/home/suzuki/.local/bin:/home/suzuki/bin:/usr/local/bin:
/usr/local/sbin:/usr/bin:/usr/sbin解説
- printenv コマンドに変数名 PATH を指定すると、その変数の値を表示します。
- PATH変数は、コマンド実行時に検索するディレクトリを「:コロン(:)」で区切って並べたものです。
- たとえば上記の結果では、以下の順番で検索されます。
| 検索順序 | ディレクトリ |
|---|---|
| ① | /home/suzuki/.local/bin |
| ② | /home/suzuki/bin |
| ③ | /usr/local/bin |
| ④ | /usr/local/sbin |
| ⑤ | /usr/bin |
| ⑥ | /usr/sbin |
→ which -a ping を実行した際に /usr/bin/ping → /usr/sbin/ping の順に表示されたのは、PATH変数の順序に従っているためです。
まとめ
「新Linuxコマンド演習32」では、
- whichコマンド による実行ファイルの場所の確認
- -aオプション による複数パスの表示
- 環境変数PATH に基づく検索順序の仕組み
を学びました。
whichコマンドは、Linuxのコマンド実行プロセスを理解する上で非常に重要です。
システム管理やトラブルシューティング時に、コマンドがどの実行ファイルを使用しているかを確認する際にも役立ちます。
