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