which コマンド
目次
概要
which - コマンドのパス名を検索するコマンドライン
which [OPTIONS] COMMAND...
対象バージョン
- RHEL 10 : GNU which v2.21
- Ubuntu 24.04
説明
which
コマンドは引数で指定したコマンドのパス名を、環境変数 PATH
のディレクトリを探索して表示します。
$ which cat /usr/bin/cat
RHEL で which
コマンドが見つからない場合はインストールしてください。
# dnf -y install which
RHEL ではエイリアス情報も探索します。Ubuntu は探索しないようです。
$ which grep alias grep='grep --color=auto' /usr/bin/grep
RHEL ではシェル関数も探索します。Ubuntu は探索しないようです。
$ lls() { /bin/ls -Fl; } $ which lls lls () { /bin/ls -Fl }
オプション
RHEL 10 のオプション
- --all, -a
- 最初に見つかったものだけではなく、すべてのパス名を表示します。
- --skip-dot
PATH
の中からドット(.
)で始まるディレクトリをスキップします。- --skip-tilde
PATH
の中からチルダ(~
)で始まるディレクトリをスキップします。- --show-dot
- ドット(
.
)で始まるパス名配下にコマンドが見つかった場合、絶対パス名ではなく./
で始まるパス名で表示します。RHEL 10 ではデフォルトの動作のようです。 - --show-tilde
- チルダ(
~
)で始まるパス名配下(/root を除く)にコマンドが見つかった場合、絶対パス名ではなく~/
で始まるパス名で表示します。RHEL 10 ではデフォルトの動作のようです。 - --tty-only
--show-dot
や--show-tilde
オプションの効能を出力先が TTY でない場合に無効化し、常に絶対パス名で表示します。- --read-alias, -i
- 標準入力からエイリアス情報を読み込み、エイリアス情報も検索対象とします。ただし、RHEL 10 ではデフォルトでエイリアス情報も参照するため
-i
を指定しなくても動作は変わらないようです。$ alias | which -i grep alias grep='grep --color=auto' /usr/bin/grep
- --skip-alias
- エイリアスを参照しません。
$ which grep # エイリアスも参照する alias grep='grep --color=auto' /usr/bin/grep $ which --skip-alias grep # エイリアスを参照しない /usr/bin/grep
- --read-functions
- 標準入力からシェル関数情報を読み込み、シェル関数情報も検索対象とします。ただし、RHEL 10 ではデフォルトでシェル関数情報も参照するため
--read-functions
を指定しなくても動作は変わらないようです。 - --skip-functions
- ヘルプにはシェル関数情報を読み込まないとありますが、RHEL 10 の実装ではシェル関数の実体(
{ ... }
)部を表示しない動作のようです。$ lls() { /bin/ls -Fl; } $ which lls lls () { /bin/ls -Fl } $ which --skip-functions lls lls () $
- --version, -[vV]
- バージョン情報を表示して終了します。
- --help,
- ヘルプを表示して終了します。
Ubuntu 24.04 のオプション
- -a
- 最初に見つかったものだけではなく、すべてのパス名を表示します。
$ which -a ls /usr/bin/ls /bin/ls
- -s
- 何も表示せず、コマンドの終了ステータスとして、コマンドが見つかれば
0
、見つからなければ1
を、オプションに誤りがあれば2
を返します。$ which -s ls ; echo $? 0 $ which -s lls ; echo $? 1
関連項目
Copyright (C) 2025 杜甫々
初版:2025年8月10日 最終更新:2025年8月10日
https://www.tohoho-web.com/linux/cmd/which.html