(最終更新日:2023年7月)
✔このような方へ向けて書かれた記事となります
「which コマンドについてもっと知りたい」
「which コマンドの使い方を理解したい」
「実際のwhich コマンドの使用例に関心がある」
✔当記事を通じてお伝えすること
- which コマンドの基本的な知識
- which コマンドの操作法および応用の仕方
- which コマンドの具体的な使用例
当記事では、which コマンドの基本概念から複雑なオプションの適用に至るまで、具体的なケースを通じて丁寧に解説しています。
ぜひ最後までご覧ください。
whichコマンドを理解するための前提知識
whichコマンドを理解するための前提知識をお伝えします。
こちらの内容を理解すれば、よりスムーズにwhichコマンドやそのほかのLinuxコマンドを使いこなせるでしょう。
- WindowsからLinux/Unixへのシフト背景
- 「whichコマンド」に焦点を当てる理由
WindowsからLinux/Unixへのシフト背景
近年、ビジネスや教育の世界でLinux/Unix系のオペレーティングシステムへの移行が加速しています。
理由としては、以下のようなことが挙げられます。
- オープンソースであるため、カスタマイズの自由度が高い
- リソースを効率的に利用できる
- 豊富なコマンドラインツールが提供されている
これらのツールを理解し、適切に活用することで、作業の効率化や自動化が可能になります。
「whichコマンド」に焦点を当てる理由
コマンドラインツールの中でも「whichコマンド」は特に重要です。
なぜなら以下のような役割を担っているから。
- コマンドの実行ファイルの位置を調べる
- 複数のバージョンが存在するコマンドのどれが使用されるのかを確認する
これらの情報は、環境設定やトラブルシューティングの際に非常に有用です。
「whichコマンド」の基本
前提を理解いただいたところで、「whichコマンド」の使い方を詳しく見ていきましょう。
- 「whichコマンド」の定義
- 書式とその解説
- 主要なオプションとその使い方
「whichコマンド」の定義
「whichコマンド」は、指定されたコマンドの絶対パスを表示するためのコマンド。
コマンドを実行する際に、システムがどの実行ファイルを使うのかを確認できます。
$ which apache2
/usr/sbin/apache2
書式とその解説
基本的な使用方法は非常に簡単で、以下のように「which」に続けて調べたいコマンド名を入力します。
which コマンド名
主要なオプションとその使い方
「whichコマンド」はいくつかのオプションを持っていますが、以下に主要なものを紹介します。
- -a(–allオプション)
- -i(-ignore-aliasオプション)
-a(--allオプション)
PATHに存在する全てのマッチする実行ファイルのパスを表示します。
例えば、システムに複数のPythonバージョンが存在する場合、which -a python
と実行することで、それら全てのパスを表示できます。
which -a python
-iまたは--ignore-aliasオプション
エイリアスを無視して、本来のコマンドのパスを表示します。
例えば、ls
コマンドにエイリアスが設定されている場合、which -i ls
と実行することでエイリアスではないls
コマンドのパスを表示します。
which -i ls
whichコマンドのオプション一覧
whichコマンドで使用可能なオプションは、システムや which
コマンドのバージョンにより異なりますが、よく使われるオプションについて以下の表にまとめました。
オプション名 | 説明 | 例 |
---|---|---|
-a | 全てのマッチするパスを表示します。複数の場所に同じコマンドが存在する場合に便利です。 | which -a python |
-s | このオプションを使用すると、一致するパスがなかった場合にも終了コードが0になります。これはスクリプト内で which を使用する際に便利です。 | which -s python |
--version | which コマンド自体のバージョン情報を表示します。 | which --version |
--help | which コマンドの使い方とオプションの一覧を表示します。 | which --help |
なお、これらのオプションは組み合わせて使用することが可能です。
また、特定のオプションが利用できない場合もありますので、使用するシステムや which
コマンドのバージョンによって異なります。
それぞれのシステムで man which
コマンドを実行し、詳細な情報を確認しましょう。
「whichコマンド」を使った具体的な操作
具体的な操作例を通じて、「whichコマンド」の利用法を理解しましょう。
- コマンドの実行ファイル探しの例
- エイリアス(alias)の検索方法
- ビルトインコマンドの検索について
- PATH内の全実行ファイルの表示方法
コマンドの実行ファイル探しの例
まず、基本的な使用法を見てみましょう。
例えば、python
コマンドの実行ファイルの位置を調べるには次のようにします。
$ which python
/home/yulikepython/.pyenv/shims/python
python
コマンドの実行ファイルが、/home/yulikepython/.pyenv/shims/ディレクトリに存在することを示しています。
エイリアス(alias)の検索方法
次に、エイリアスの検索について見てみましょう。
which
コマンドはエイリアスも探し出せるのです。
例えば、ls
コマンドにエイリアスが設定されているか確認するには次のようにします。
which ls
このコマンドを実行すると、ls
コマンドがエイリアスされている場合はそのエイリアスが表示されます。
そのエイリアスを無視して、本来のls
コマンドの位置を知りたい場合は先ほど説明した-i
オプションを使用してください。
ビルトインコマンドの検索について
シェルのビルトインコマンドを検索する場合、「which」コマンドは使えません。
which cd
もし調べたコマンドで何も出力されないときは、ビルトインコマンドである可能性があります。
ビルトインコマンドかどうかは、type
コマンドで調べましょう。
$ type cd
cd はシェル組み込み関数です
whichコマンドと一緒に、typeコマンドも覚えておくとトラブルシューティングに役立つでしょう。
PATH内の全実行ファイルの表示方法
特定のコマンドがシステム上のどの場所にあるかをすべて表示する方法を見てみましょう。
これは-a
オプションを使います。
例えば、すべてのpython
コマンドの場所を見つけるには以下のようにします。
$ which -a python
/home/yulikepython/.pyenv/shims/python
/usr/bin/python
/bin/python
これを実行すると、システム上のすべてのpython
コマンドが存在する場所が表示されます。
これは、複数のバージョンのソフトウェアを管理している場合に特に有用です。
「whichコマンド」を活用:練習問題
以上の説明を踏まえて、「whichコマンド」の使い方をより深く理解するための例題とそれに対する解答を提示します。
grep
コマンドの実行ファイルがシステムのどの場所に存在するか調べる- lsコマンドのエイリアスを確認し、エイリアスを無視したコマンドの場所を表示する
echo
コマンドがビルトインコマンドであることを確認する- 全ての
java
コマンドの場所を表示する
grepコマンドの実行ファイルがシステムのどの場所に存在するか調べる
解答
which grep
解説
which grep
は、grep
コマンドの実行ファイルがシステムのどこに存在するかを表示します。
lsコマンドのエイリアスを確認し、エイリアスを無視したコマンドの場所を表示する
解答
which ls
which -i ls
解説
which ls
はls
コマンドがエイリアスされているかどうかを調べ、エイリアスを無視した本来のls
コマンドの位置をwhich -i ls
で探します。
echoコマンドがビルトインコマンドであることを確認する
解答
type echo
解説
echo
がビルトインコマンドであることをtype
コマンドを用いて確認します。
全てのjavaコマンドの場所を表示する
解答
which -a java
解説
システム上の全てのjava
コマンドの場所を表示するためにwhich -a java
を実行します。
これは、同じ名前のコマンドが複数存在する場合や、複数のバージョンを管理している場合に有用です。
コマンド使用時の注意点と対策
「whichコマンド」は便利なツールですが、使用する際には注意すべき点がいくつかあります。
大きな問題となる前に、事前に見ておきましょう。
- 頻出する問題点やエラーの例
- 問題解決のためのヒント及び対策
頻出する問題点やエラーの例
よくある問題として、以下のようなものが挙げられます。
- シェルのビルトインコマンドに対して
which
コマンドを実行すると、何も出力されない - コマンドのエイリアスが表示されるが、本来のコマンドの場所が表示されない
問題解決のためのヒント及び対策
できる対策としては、以下のようなものがあります。
- 対策1: ビルトインコマンドを調べる際は
type
コマンドを使用し、ビルトインコマンドかを確認 - 対策2: エイリアスを無視して本来のコマンドの位置を知りたい場合は、
-i
オプションを使用
まとめ
当記事では、「whichコマンド」の基本的な使用法から高度な利用法、そして問題点とその対策について詳しく解説しました。
「whichコマンド」はLinux/Unixシステム上でコマンドの位置を素早く見つけるための便利なツールで、この記事を通じてその利用価値と活用法について理解していただけたことと思います。
ターミナルを開いて、いろいろと触ってみると良いでしょう。
当記事のコマンド例を参考にしてください。