【Linux】コマンドの場所(パス)を確認する方法まとめ

【Linux】コマンドの場所(パス)を確認する方法まとめ

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:1,660

Linuxでコマンドの実体(実行ファイル)がどこにあるか(場所・パス)を確認する方法を解説します。which、whereis、type、command -vなど、目的別に適したコマンドの使い方をわかりやすく紹介します。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルを利用していると、「今実行しているコマンドの実体はどこにあるのか?」「複数バージョンがインストールされているが、どのパスのコマンドが優先されているのか?」といった疑問を持つことがあります。

また、cronにスクリプトを登録する際などは、環境変数が異なるためコマンドを絶対パスで記述することが推奨されます。その際にもコマンドの場所を確認する作業が必要です。

本記事では、Linuxでコマンドの場所(パス)を確認する方法を、目的別(which, whereis, type, command -v)に解説します。

コマンドの場所を確認する代表的な方法一覧

用途に応じて、以下のコマンドを使い分けるのが一般的です。

コマンド特徴・用途
which最もよく使われる。環境変数 $PATH から実行ファイルの場所を検索する。
typeコマンドの種類(エイリアス、組み込みコマンド、外部コマンドなど)も含めて詳細に確認できる。
whereis実行ファイルだけでなく、ソースコードやマニュアル(man)の場所も検索する。
command -vPOSIX準拠のため、シェルスクリプト内でパスを確認する際によく利用される。

それぞれ詳しく見ていきましょう。

1. which コマンド:シンプルに実行パスを確認

whichコマンドは、環境変数 $PATH に設定されているディレクトリ内を検索し、最初に見つかった実行ファイルの絶対パスを表示します。一番シンプルでよく使われるコマンドです。

実行例
$ which python3
/usr/bin/python3

複数のパスに同名コマンドがある場合 (-a)

同じ名前のコマンドが複数の場所にインストールされている場合、デフォルトでは「最優先で実行されるもの(最初に見つかったもの)」だけが表示されます。 すべて確認したい場合は -a オプションを使用します。

実行例
$ which -a python3
/usr/bin/python3
/usr/local/bin/python3

2. type コマンド:コマンドの種類も詳細に確認

typeコマンドは、単なる実行パスだけでなく、「そのコマンドがどのように解釈されるか(エイリアス、シェルの組み込みコマンド、外部コマンドなど)」を教えてくれます。

実行例:外部コマンドの場合
$ type grep
grep is /usr/bin/grep
# ※現在のセッションで一度でも実行されたコマンドはパスがキャッシュされ、以下のように表示されます。
# grep is hashed (/usr/bin/grep)
実行例:エイリアス(別名)の場合
$ type ll
ll is aliased to `ls -l'
実行例:シェルの組み込みコマンドの場合
$ type cd
cd is a shell builtin

エイリアスが設定されているコマンドの実体を調べたい時などに非常に重宝します。typeコマンドにも -a オプションがあり、全ての場所や種類を表示させることができます。

3. whereis コマンド:マニュアル等の場所も確認

whereisコマンドは、環境変数 $PATH だけでなく、システムの標準的なディレクトリを検索し、実行ファイル(バイナリ)、ソースコード、マニュアル(manページ)の場所をすべて表示します。

実行例
$ whereis nginx
nginx: /usr/sbin/nginx /usr/share/man/man8/nginx.8.gz

実行ファイルだけを探す (-b)

マニュアルなどのパスが不要で、バイナリ(実行ファイル)の場所だけを知りたい場合は -b オプションを使用します。

実行例
$ whereis -b nginx
nginx: /usr/sbin/nginx

4. command -v :シェルスクリプトでの推奨

command -v は、whichtype と同様にコマンドの場所を出力しますが、POSIX準拠であるという特徴があります。

which コマンドはOSOS [オーエス]Operating System。基本ソフトウェアや環境によってはインストールされていなかったり、挙動が微妙に異なる場合がありますが、command -v は多くのシェルに組み込まれているため、シェルスクリプト内でコマンドの存在確認やパスの取得を行う場合に推奨される方法です。

実行例
$ command -v docker
/usr/bin/docker

シェルスクリプトで「あるコマンドがインストールされているか」をチェックする場合は、以下のように書くのがベストプラクティスとされています。

シェルスクリプトでの利用例
if ! command -v jq > /dev/null 2>&1; then
echo "jqコマンドが見つかりません。インストールしてください。"
exit 1
fi

まとめ

Linuxでコマンドの場所(パス)を確認する方法を解説しました。 目的に合わせて、以下のように使い分けるのがおすすめです。

  1. 普段使いでサクッとパスを知りたい: which コマンド
  2. エイリアスかどうかも含めて詳細に知りたい: type コマンド
  3. 関連ファイル(マニュアルなど)も探したい: whereis コマンド
  4. シェルスクリプト内で使用したい: command -v コマンド

特に cron の設定などでは、コマンドが見つからずにエラーになるケースが多いため、事前にこれらのコマンドで絶対パスを確認する癖をつけておくとトラブルを減らすことができます。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

人気記事


記事を評価

Thanks!
目次
Scroll to Top