whichとwhereisコマンドの違いと使い方を解説

先生

whichとwhereis? どっちを使えばいいの? コマンドの場所探しはこれで迷わない!

whichコマンドとwhereisコマンド:ファイル検索の使い分け

LinuxやmacOSなどのUnix系OSを使用していると、コマンドの実行ファイルがどこにあるのかを知りたい場合があります。そんな時に役立つのがwhichコマンドとwhereisコマンドです。これらはどちらもファイルの場所を特定するコマンドですが、それぞれ異なる特性を持っています。この記事では、whichコマンドとwhereisコマンドの違いと使い方を分かりやすく解説します。

SEO対策として、whichwhereisの違いを明確にし、具体的な使用例を交えながら、読者がそれぞれのコマンドを適切に使いこなせるように説明します。初心者のプログラマーでも理解できるように、専門用語はできるだけ避け、平易な言葉で解説します。

whichコマンド:実行ファイルの場所を特定

whichコマンドは、主に実行可能ファイルの場所を特定するために使用されます。PATH環境変数を参照して、指定されたコマンドがどのディレクトリに存在するかを調べます。PATHは、OSがコマンドを探すディレクトリのリストです。

例えば、pythonコマンドの場所を知りたい場合は、ターミナルで以下のように入力します。

which python

すると、以下のようにpythonコマンドのパスが表示されます。

/usr/bin/python

もし、指定されたコマンドがPATH環境変数に登録されているディレクトリに見つからない場合、whichコマンドは何も出力しません。

複数の実行ファイルが存在する場合は、最初に見つかったものが表示されます。

また、whichコマンドは、エイリアスや関数についても、その定義内容を表示することができます。

which ls

lsコマンドに対してwhichコマンドを実行すると、エイリアスが設定されている場合は、そのエイリアスが表示されます。

alias ls='ls -l'

上記のようにエイリアスが設定されている場合、which ls の結果はalias ls='ls -l'となります。

whereisコマンド:バイナリ、ソース、マニュアルファイルの場所を特定

whereisコマンドは、実行可能ファイルだけでなく、ソースファイルマニュアルページの場所も特定できます。whichコマンドよりも広範囲な検索を行うことができます。

whereisコマンドを使用するには、ターミナルで以下のように入力します。

whereis python

すると、以下のようにpythonコマンドのバイナリファイル、ソースファイル、マニュアルページのパスが表示されます。

python: /usr/bin/python3.9 /usr/share/man/man1/python3.9.1.gz

whereisコマンドは、デフォルトで標準的なディレクトリ(/bin, /usr/bin, /usr/local/binなど)を検索します。検索対象のディレクトリを-b, -m, -sオプションで指定することも可能です。

例えば、バイナリファイルのみを検索する場合は、-bオプションを使用します。

whereis -b python

-b, -m, -sオプションはそれぞれ、バイナリファイル、マニュアルファイル、ソースファイルを検索することを意味します。

whichとwhereisコマンドの主な違い

whichコマンドとwhereisコマンドの主な違いは以下の通りです。

* 検索対象: whichは実行可能ファイルのみを検索しますが、whereisは実行可能ファイル、ソースファイル、マニュアルページを検索します。

* 検索範囲: whichPATH環境変数に登録されているディレクトリのみを検索しますが、whereisはより広範囲な標準ディレクトリを検索します。

* 出力: whichは最初に見つかった実行可能ファイルのパスのみを出力しますが、whereisはすべての該当するファイルのパスを出力します。

まとめると、whichはコマンドの実行場所を素早く知りたい場合に、whereisは関連するファイル(ソースやマニュアル)も含めて包括的に調べたい場合に適しています。

具体的な使用例

例1:Pythonの実行ファイルの場所を特定する

which pythonを実行すると、Pythonの実行ファイルのパスが/usr/bin/pythonのように表示されます。これにより、どのPythonインタプリタが使用されているかを確認できます。

例2:特定のコマンドが存在するか確認する

which some_commandを実行して何も出力されない場合、そのコマンドはPATH環境変数に登録されているディレクトリに存在しないことを意味します。これは、コマンドがインストールされていないか、環境変数が正しく設定されていない可能性があります。

例3:manコマンドの関連ファイルを検索する

whereis manを実行すると、manコマンドの実行ファイル、ソースファイル、マニュアルページの場所がまとめて表示されます。これにより、manコマンドの関連ファイルを一度に確認できます。

例4:オプション-bを利用してバイナリファイルのみ検索する

whereis -b nginx

上記コマンドを実行するとnginxのバイナリファイルのみ検索できます。 nginx: /usr/sbin/nginxのように表示されます。

参考リンク

まとめ

whichコマンドとwhereisコマンドは、どちらもファイルの場所を特定する便利なツールですが、それぞれ異なる特性を持っています。whichコマンドは実行可能ファイルの場所を素早く特定するのに適しており、whereisコマンドはより広範囲なファイルを包括的に検索するのに適しています。これらの違いを理解し、状況に応じて使い分けることで、より効率的にファイル管理を行うことができます。これらのコマンドを使いこなして、快適なコマンドライン生活を送りましょう。