Linux which・whereis・locate: 場所(パス)を確認する3つのコマンド

公正取引委員会の広告文 Ver 3.1
公正取引委員会の広告文 Ver 3.2(モバイル専用)
テスト環境RHEL系AlmaLinux 9.8rootアカウント2026-10-07 確認
検索コマンドwhichwhereislocate

httpd.confを直したいのにファイルの場所が分からなかったり、同じ名前のコマンドが2か所にあってどちらが実行されるのか迷ったりすることがあります。Linuxのwhichコマンドは実際に実行されるファイルを、Linuxのwhereisコマンドは実行ファイルと設定フォルダ・マニュアルを、locateコマンドは名前を含むすべてのパスを探します。3つのコマンドの違いを表で比べ、ブラウザ内の仮想サーバーで実際に打てるようにしました。

AlmaLinux 9.8では、whichはwhich 2.21、whereisはutil-linux 2.37.4パッケージに入っていて最初から使えますが、locateはmlocate 0.26パッケージを別途インストールする必要があります。

✅ which・whereis・locateの違い

3つのコマンドは探す場所が違います。whichとwhereisは決まったフォルダをその場で探し、locateはあらかじめ作っておいたファイル一覧(DB)から名前を探します。

コマンド探すもの探す場所新しく作ったファイル
which実行されるコマンドファイル1つ、エイリアス(alias)PATHに登録されたフォルダすぐ見つかる
whereis実行ファイル・設定フォルダ・マニュアル/usr/bin・/etc・/usr/share/manのような決まったフォルダすぐ見つかる
locate名前を含むすべてのファイルとフォルダあらかじめ作ったDB(/var/lib/mlocate/mlocate.db)updatedbの後に見つかる

同じhttpdをwhichとwhereisで探すと、違いがすぐ分かります。

~]# which httpd
/usr/sbin/httpd
~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gz

locateは名前の一部が合うだけでもパスをすべて表示するので、[locate httpd.conf]と打つと設定ファイルのほかにマニュアル(httpd.conf.5.gz)やバックアップしておいたコピーまで出てきます。

下の仮想サーバーで左のwhich・whereis・locateを選ぶとチップが変わり、チップを押すとそのコマンドが入力されます。キーボードで直接打っても構いません。

場所確認コマンドシミュレーターAlmaLinux 9.8
[root@server work]#
ブラウザの中だけで動き、実際のサーバーには触れません。左でコマンドを選ぶと下のチップが変わり、チップを押すとそのコマンドが入力されます。同じhttpdを3つのコマンドで探して結果を比べ、locateでは新しいファイルを作ってからupdatedbの前後で探してみてください。こじれたら[最初から]を押し、uknew helpと入力すると使えるコマンドが表示されます。

ファイルを名前ではなくサイズや更新日で探すときは findコマンドを使い、今いるフォルダのパスは pwdコマンドで確認します。

✅ Linux whichコマンド

whichはPATHに登録されたフォルダを先頭から順に探し、最初に見つけた実行ファイルを1つ表示します。コマンドを打ったときに実際に実行されるのがこのファイルです。

AlmaLinuxのbashはwhichにエイリアス一覧を渡すので、エイリアスが設定されたコマンドはエイリアスと実際のファイルが一緒に出ます。PATHのどこにもなければ[no コマンド in (PATH)]と出ます。

~]# which ll
alias ll='ls -l --color=auto'
	/usr/bin/ls
~]# which htop
/usr/bin/which: no htop in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

オプションは事実上-aだけです。同じ名前がPATHの2つのフォルダにあるときにすべて表示し、一番上に出たものが実際に実行されます。

~]# which ping
/usr/sbin/ping
~]# which -a ping
/usr/sbin/ping
/usr/bin/ping

AlmaLinux 9.8の/usr/sbin/pingは/usr/bin/pingを指すリンクなので、結果は同じです。自分でインストールしたプログラムが/usr/local/binにあれば、PATHの順序上/usr/binのものより先に実行されます。

[which cd]は/usr/bin/cdを表示しますが、シェルでcdを打つとこのファイルではなくシェル組み込みコマンドが実行されます。組み込みコマンドかどうかは[type cd]で確認でき、[cd is a shell builtin]と出ます。

✅ Linux whereisコマンド

whereisはコマンド名から実行ファイルとマニュアルを一緒に探します。PATHとは関係なく/usr/bin・/usr/sbin・/usr/lib64・/etc・/usr/shareのような決まったフォルダを探すので、同じ名前の設定フォルダ(/etc/httpd)まで出てきます。

オプション説明
-b実行ファイル側だけ。httpdなら/usr/sbin/httpdと/usr/lib64/httpd・/etc/httpd・/usr/share/httpd
-mマニュアルだけ(/usr/share/man・/usr/share/info)
-sソースだけ。AlmaLinux 9.8の標準インストールでは[httpd:]のように名前だけ出る
-lwhereisが探すフォルダの一覧
~]# whereis -b httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd
~]# whereis -m httpd
httpd: /usr/share/man/man8/httpd.8.gz
~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1ossl.gz /usr/share/man/man1/passwd.1.gz

見つからなければ[htop:]のように名前だけ出ます。whichは見つからないと終了コード1を返し、whereisは0を返すので、スクリプトでインストールの有無を確かめるときはwhichを使います。

✅ Linux locateコマンド

locateはディスクを探さず、あらかじめ作ったDBから名前を探します。そのため速いですが、DBを作った後にできたファイルは見つけられません。

~]# dnf -y install mlocate
~]# updatedb

インストール直後にすぐ打つとまだDBがなく[locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory]と出ますが、updatedbを一度実行すると作られます。その後はmlocate-updatedb.timerが1日1回DBを作り直します。

新しく作ったファイルはupdatedbの前には出ず、削除したファイルはupdatedbまで出続けます。今あるファイルだけを見るには-eを付けます。

~]# touch report.txt
~]# locate report.txt
~]# updatedb
~]# locate report.txt
/root/work/report.txt
~]# rm -f report.txt
~]# locate report.txt
/root/work/report.txt
~]# locate -e report.txt

/etc/updatedb.confのPRUNEPATHSに/tmp・/var/tmp・/mnt・/mediaが入っているので、これらのフォルダのファイルはupdatedbを実行しても出てきません。

🔲 locateコマンドのオプション

オプション説明
-i大文字と小文字を区別せずに探す
-cパスの代わりに見つかった数だけ
-l= -n後ろに数字を付けてその数までに。-l 3
-bパス末尾のファイル名だけで探す
-eDBにあっても今はないファイルは除く
-SDB情報(フォルダ数・ファイル数・サイズ)
-r正規表現で探す。locate -r “httpd.conf$”

ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

人間であることを証明してください: 10   +   8   =