【保存版】whichコマンドの基本|コマンド例付きで丁寧に解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年7月)

✔このような方へ向けて書かれた記事となります

「which コマンドについてもっと知りたい」
「which コマンドの使い方を理解したい」
「実際のwhich コマンドの使用例に関心がある」

✔当記事を通じてお伝えすること

  • which コマンドの基本的な知識
  • which コマンドの操作法および応用の仕方
  • which コマンドの具体的な使用例

当記事では、which コマンドの基本概念から複雑なオプションの適用に至るまで、具体的なケースを通じて丁寧に解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

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
--versionwhich コマンド自体のバージョン情報を表示します。which --version
--helpwhich コマンドの使い方とオプションの一覧を表示します。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 lslsコマンドがエイリアスされているかどうかを調べ、エイリアスを無視した本来の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システム上でコマンドの位置を素早く見つけるための便利なツールで、この記事を通じてその利用価値と活用法について理解していただけたことと思います。

ターミナルを開いて、いろいろと触ってみると良いでしょう。

当記事のコマンド例を参考にしてください。

タイトルとURLをコピーしました