Linuxコマンド一覧

whichコマンド|そのコマンドの実体がどこにあるかを調べる

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
which を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

which は、打ったコマンドが実際にどのファイルを実行するのかを調べるコマンドです。PATH の探す順番、`command not found` の切り分け方、自分で入れたコマンドが見つからないときの直し方を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-06

書式

which コマンド名...

PATH の中を探して、最初に見つかったファイルの場所を出します。

まず打ってみる

$ which ls
/usr/bin/ls

ls と打ったとき、実際に動いているのは /usr/bin/ls というファイルだと分かります。 複数まとめて調べることもできます。

$ which ls grep git
/usr/bin/ls
/usr/bin/grep
/usr/bin/git

PATH と探す順番

シェルは、コマンド名を打たれると PATH に並んだディレクトリを左から順に探します。

$ echo $PATH
/usr/bin:/bin:/usr/local/bin

同じ名前のファイルが複数あっても、先に見つかったほうが使われます。

$ which python3
/usr/bin/python3

このターミナルには /usr/local/bin にも python3 があります。

$ ls /usr/local/bin
python3

それでも /usr/bin/python3 が答えになるのは、PATH/usr/bin のほうが先だからです。 新しく入れたはずのバージョンが使われないときは、たいていこれが原因です。

何も出ないとき

見つからなければ、何も出ません。

$ which nosuchcmd

シェル自身が持っている命令も、何も出ません。

$ which cd

cd はファイルとして存在せず、シェルの中の機能だからです。 「which で出ない = 使えない」ではない、ということです。

自分で入れたコマンドが見つからない

~/bin/backup というスクリプトを置いた状況で考えます。

$ which backup

見つかりません。 理由は2つあり、順に潰します。 まず、実行の権限が無いと候補になりません。

$ chmod +x /home/user/bin/backup
$ which backup

それでも見つかりません。 ~/binPATH に入っていないからです。

$ export PATH=$PATH:/home/user/bin
$ echo $PATH
/usr/bin:/bin:/usr/local/bin:/home/user/bin
$ which backup
/home/user/bin/backup

実行の権限置き場所が PATH にあること、この両方がそろって初めて見つかります。 export で足した PATH はその端末のあいだだけ有効なので、いつも使いたいなら .zshrc.bashrc に書きます。

実務での使いどころ

which は、「思っているものが動いているか」を確かめるときに打つコマンドです。

場面打ち方
どのバージョンが使われているか調べるwhich python3
入れたはずのツールが使えるか確かめるwhich docker
command not found の原因を切り分けるwhich <名前>echo $PATH
インストール先を確かめるwhich git

つまずきやすいところ

シェルの組み込みは出ません。 cdexport はファイルではないので、which は答えられません。

PATH の順番が結果を決めます。 同じ名前が複数あるときは、PATH の先に書いたディレクトリが勝ちます。 入れ替えたはずのバージョンが反映されないときは、echo $PATH で並び順を見てください。

エイリアスは別の話です。 ll のようなエイリアスは PATH のファイルではないので、which では追えません。 エイリアスの中身を知りたいときは alias を打ちます。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

man / echo / chmod / ls

よくある質問

which は何を教えてくれますか?
そのコマンド名で実際に実行されるファイルの場所です。同じ名前のものが複数あるときに、どれが使われているかが分かります。
何も出ないのはなぜですか?
PATH の中に見つからなかったか、`cd` のようにシェル自身が持っている命令(組み込み)だからです。組み込みには実体のファイルが無いので、which は答えられません。
同じ名前のコマンドが2つあるとどうなりますか?
PATH に書かれた順に探し、最初に見つかったものが使われます。バージョンを入れ替えたつもりで反映されないときは、PATH の順番を疑ってください。
自分で作ったコマンドが command not found になります。
実行の権限(`chmod +x`)と、置き場所が PATH に入っていること、この2つが必要です。片方だけでは見つかりません。
which と man はどう使い分けますか?
`which` は「どこにあるか」、`man` は「どう使うか」です。バージョン違いを疑うときは which、オプションを知りたいときは man を打ちます。