
Linux は、広範なカスタマイズ オプションから詳細なシステム管理機能まで、コンピューティング環境に対する比類のない制御をユーザーに提供します。利用可能な多数のツールの中でも、which
コマンドは、コマンド ライン エクスペリエンスを調和させる重要なツールとして際立っています。このユーティリティを使用する$PATH
と、変数で指定されたディレクトリをスキャンして、実行可能ファイルの正確な場所を見つけることができます。この包括的なガイドでは、 コマンドの動作を詳しく調べwhich
、その構文とオプションを明確にし、コマンド ラインの熟練度を高めるための実用的な例を示します。
which コマンドの構文と機能の理解
コマンドwhich
は、特定のコマンドに関連付けられた実行可能ファイルを見つけるための頼りになるツールです。このコマンドは、PATH 環境変数で概説されているディレクトリを調べることで機能します。このコマンドは、コマンドを実行したときにどのファイルが実行されるかを明らかにし、検索結果に基づいて関連する出力を提供します。
-
0
指定されたすべてのコマンドが見つかり、実行可能であることを示します。 -
1
1 つ以上のコマンドが欠落しているか実行できないことを示します。 -
2
無効なオプションが使用されたことを示します。
Linux でコマンドを呼び出すための標準構文はwhich
簡単です。
which [file1] [file2]...
[file1]
およびを、[file2]
検索したい実行可能ファイルの名前に置き換えるだけです。
which コマンドを使用する理由は何ですか?
このwhich
コマンドは、Linux で複数の重要な機能を果たします。このコマンドを使用すると、コマンドが実際の実行可能ファイル、エイリアス、またはシンボリック リンクに対応しているかどうかを確認できます。さらに、実行可能ファイルの正確な場所を特定し、PATH 変数内で不足しているコマンドや競合しているコマンドを識別するのに役立ちます。このコマンドを使用すると、which
システムに複数のバージョンが存在する場合でも、目的のバージョンのコマンドが効果的に実行されることが保証されます。このコマンドを使用すると、特にさまざまなツールやスクリプトを処理するときに、生産性を大幅に向上できます。
whichコマンドの実際的な応用
which
ここで、実際のシナリオでこのコマンドをどのように適用できるかを示すために、さまざまな実用的な例を見てみましょう。
例 1: 実行ファイルのパスを見つける
コマンドの実行可能ファイルがどこにあるかを特定するのは、次のwhich
コマンドで簡単にできます。
which grep

/usr/bin/grep
実行可能ファイルの正確な場所を明確に示す「 」などの出力が表示されます。
例2: 複数のコマンドのパスの検索
次のコマンドを使用して、複数のコマンドを同時にクエリすることができますwhich
。
which awk sed cat touch
awk
このコマンドは、、、sed
およびコマンドのパスを取得しますcat
。

例3: コマンドのすべてのインスタンスを表示する
のデフォルトの動作ではwhich
、PATH で最初に見つかったものだけが返されます。-a
オプションを使用すると、特定のコマンドのすべてのインスタンスを検出できます。
which -a cat
これにより、が見つかるすべての場所のリストが提供されますcat
。

これらのファイルの詳細を確認するには、実際の実行可能ファイルか重複ファイルかを識別するオプションls
を指定したコマンドを使用します。-lh
ls -lh /usr/bin/cat && ls -lh /bin/cat

出力には、異なるディレクトリにある 2 つの同一コマンドが示され、両方とも 35 KB の実行可能ファイルとして例示されています。
例4: コマンドの存在を確認する
次のコマンドを使用して、特定のコマンドが存在するかどうかを確認しますwhich
。
which cats

コマンドが存在しない場合は出力は表示されず、終了ステータスはゼロ以外になり、コマンドが見つからないことを示します。
例5: シンボリックリンクの識別
システムに同じプログラムの複数のバージョンがある場合、特定のインスタンスは実際のバイナリではなくシンボリック リンクである可能性があります。シンボリック リンクを識別するには、次のオプションwhich
を使用してコマンドを実行します-a
。
which -a crontab

次に、次のコマンドでファイルの詳細を確認しますls
。
ls -lh /usr/bin/crontab && ls -lh /bin/crontab

出力に が表示される場合、->
そのファイルは別の場所を指すシンボリック リンクであることを示します。
例6: シェル組み込みコマンドの除外
特に、which
コマンドはシェルの組み込みコマンドを省略し、外部実行可能ファイルのみを表示するため、プログラムがインストールされている場所の識別が容易になります。たとえば、 はls
パスを返しますがread
、組み込みコマンドである は次の処理を実行しません。
which ls read

which コマンドの制限
このwhich
コマンドには、特定のコンテキストでその有効性を妨げる可能性のある特定の制限があります。主に外部実行可能ファイルに焦点を当てており、やなどの組み込みコマンドcd
をread
識別しません。さらに、バイナリ ファイルとシンボリック リンクを区別できません。変数で指定されたディレクトリ内を厳密に検索するため$PATH
、別の場所に保存されているプログラムは見つかりません。さらに、ファイルの種類、権限、バージョン情報などの詳細を提供する機能がありません。特に、コマンドが存在しない場合は、エラー メッセージではなく、単に出力が返されます。
これらの制限を回避するには、、、またはなどの代替コマンドの使用を検討しwhereis
てtype
くださいls
。
Where コマンドと Which コマンド
where
とコマンドはどちらもwhich
ファイルの検索を目的としていますが、目的は異なります。where
コマンドは通常、Windows および特定の Unix 系システム内で使用され、ファイルとディレクトリの両方を検索し、システムの PATH に一致するものをすべて一覧表示します。
逆に、このwhich
コマンドは Unix 系システム専用であり、$PATH
変数で指定されたディレクトリ内の実行可能ファイルのみを対象とします。デフォルトでは、最初に見つかった一致のみを返しますが、オプションを使用すると、-a
すべての一致を一覧表示できます。
違いを説明すると、where node
Windows で実行すると、ノード実行ファイルが見つかるすべての場所が表示されますが、Linux で実行すると、which gcc
GCC コンパイラが配置されている最初のディレクトリが返されます。
豊富な機能を提供する一方で、which
コマンドにはいくつかの機能が欠けている場合があります。それでも、ユーザーは補助コマンドを使用することでその制約を克服できます。which
は 内の実行可能ファイルのみを検出することにも注意してください$PATH
。スクリプトまたはプログラムが識別されない場合は、単に実行権限がない可能性があります。したがって、 にリストされているディレクトリにスクリプトが$PATH
適切な実行権限で存在することを確認することが重要です。
よくある質問
1.which コマンドの主な目的は何ですか?
このコマンドの主な目的は、環境変数which
で指定されたディレクトリを検索して、特定のコマンドに関連付けられた実行可能ファイルを見つけることです。$PATH
2.which コマンドを使用して複数の実行可能ファイルを一度に検索するにはどうすればよいですか?
which
次のようにスペースで区切って1 つのステートメントで複数のコマンドを指定しwhich command1 command2
、指定したすべての実行可能ファイルのパスを一度に取得することができます。
3.which コマンドを使用する際に注意すべき制限事項は何ですか?
このwhich
コマンドには、組み込みのシェル コマンドが見つからない、バイナリ ファイルとシンボリック リンクが区別されない、$PATH
変数で指定されたディレクトリ内でのみ検索されるなど、いくつかの制限があります。実行ファイルが見つからない場合は、エラー メッセージが返されないため、誤解を招く可能性があります。
コメントを残す ▼