Linuxコマンドwhereは、さまざまなコマンドやプログラムの場所を特定する際に非常に便利です。複数のバージョンのソフトウェアがインストールされている場合、特定のプログラムがどのディレクトリに位置しているかを確認するために、whereコマンドが大いに役立ちます。この記事では、Linuxでのwhereコマンドの使用方法とオプションについて詳しく説明します。
目次
Linuxコマンドwhereとは?
Linuxコマンドwhereは、ユーザーが実行しようとしているプログラムやコマンドがシステム内のどこにあるかを探し出す機能を持っています。このコマンドは主にユーザー環境変数に設定されたパス(PATH)内で該当プログラムを検索します。
さらに、Linuxコマンドwhereはzshのビルトインコマンドであり、zshでのみ使用可能です。bashでは使用できないため、which、type、command -vといったコマンドを利用する必要があります。Linuxコマンドwhichの使い方と2つのオプションや、Linuxコマンドtype使い方と4つのオプションに関する記事もご参照ください。
基本使用法
whereコマンドの基本的な使用方法は非常に簡単です。コマンドの後に探したいプログラムやコマンドの名前を入力するだけです。
where name ...
ShellScript例えば、pythonというプログラムの場所を探したい場合、以下のように入力します。
where python
ShellScriptこのコマンドを実行すると、下記の図のようにシステムにインストールされているpython実行ファイルのパスが表示されます。

さらに、複数のコマンドを以下のように入力すると、それぞれのコマンドのパスが同時に表示されます。

whereコマンドの有用なオプション
Linuxでは、whereコマンドに多様なオプションが用意されています。これらのオプションを活用することで、特定の状況により適した検索結果を得ることができます。主なオプションは次の通りです。
-w オプション: コマンドの種類
-wオプションを使用すると、そのコマンドがどの種類のコマンドであるかを表示します。alias、builtin、command、function、hashed、reversed、またはnoneで表現されます。
where -w name
ShellScriptこのオプションは、特定のコマンドの種類を確認する際に便利です。以下の図では、whichコマンドがbuiltinコマンドであり、かつcommandでもあることがわかります。

-p オプション: パス出力
-pオプションは、コマンドファイルのパスを出力する際に使用します。
where -p name
ShellScript先ほど、whichコマンドには2つのcommandがあることが確認できました。-pオプションを使用すると、それぞれのコマンドのパスがすべて表示されます。

-m オプション: パターンで検索
-mオプションを利用する際には、ワイルドカードなどを使用してパターンでコマンドを検索できます。この場合、パターンは引用符で囲む必要があります。
where -m "whe*"
ShellScriptこのパターンは、wheで始まるすべてのコマンドを検索します。以下の図では、シェルビルトインコマンドとパスを通じてコマンドの場所が表示されます。

-s オプション: シンボリックリンク
コマンドがシンボリックリンクに該当する場合、シンボリックリンクの元ファイルのパスも一緒に表示されます。
where -s name
ShellScript以下のように-sオプションを使用すると、左側にシンボリックリンク矢印(->)、右側に対象ファイルが表示されます。

-S オプション: シンボリックリンクのすべてのパス
小文字の-sオプションと似ており、シンボリックリンクの元ファイルパスを表示しますが、中間パスがある場合はそのすべてを表示するオプションです。大文字の-Sオプションは、シンボリックリンクがどの順序で設定されているかを追跡する際に便利です。
where -S name
ShellScript以下のように、より詳細なシンボリックリンクのパスを確認することができます。

コマンド使用時の注意点
whereコマンドを使用する際には、いくつかの注意点があります。
- zshでのみ使用可能: zshでのみ実行できるzshビルトインコマンドです。bashシェルでは実行できないことを忘れないでください。
- 知っておくと良いコマンド: where以外にも、似た機能を持つコマンドとしてwhichとtypeがあります。whichはコマンドの最初のパスのみを出力し、typeはコマンドが内蔵コマンドか外部コマンドかなどを区別する機能を持ちます。状況に応じて適切なコマンドを選択して使用すると良いでしょう。
活用方法および隠れた機能
whereコマンドは、単にプログラムの場所を特定するだけでなく、さまざまな用途に活用できます。例えば、スクリプトを作成する際に特定のプログラムが存在するか確認し、それに応じて別の動作を実行させることができます。
また、システムのPATH設定を変更したり、プログラムのバージョンを管理する際にも、whereコマンドは有用です。特に、複数のバージョンのプログラムがインストールされている環境で、特定のバージョンのプログラムを使用する際、そのパスを確認し、パスの優先順位を調整することができます。
まとめ
Linuxシステムにおいて、whereコマンドはプログラムやコマンドの位置を簡単に確認できる非常に便利なツールです。さまざまなオプションを活用して、より効率的に使用してみてください。ただし、zshビルトインコマンドなので、zshでのみ使用可能です。基本的なコマンドの使用法を習得しておけば、Linuxシステムをより熟練して扱えるようになります。
Linux環境での作業は、さまざまなコマンドをどれだけうまく活用できるかによって、その効率性が大きく変わります。今後も多様なコマンドを習得し、Linuxの世界をさらに深く探求してみてください。