WHICH
Section: User Commands (1)
Index
JM Home Page
roff page
名前
which - (シェル) コマンドのフルパスを表示
書式
which [options] [--] programname [...]
説明
which は 1 つまたは複数の引数を取ります。
その引数それぞれに対して、その引数がシェルプロンプトから入力された際に、実行されることになる実行モジュールのフルパスを stdout に出力します。
これを実現する際には、環境変数 PATH に列記されたディレクトリ内から実行ファイルやスクリプトを検索します。 これは bash(1)
と同じアルゴリズムを用いています。
このマニュアルページは which.texinfo ファイルから生成されています。
オプション
- --all, -a
-
PATH 内に見つかった実行ファイルすべてを表示します。 最初に見つかったもの以外も表示します。
- --read-alias, -i
-
標準入力からエイリアスを読み込んで、合致したものを標準出力します。 これは which そのものを含む alias
において、本オプションを合わせて利用すると便利です。 たとえば以下です。
alias which='alias | which -i'.
- --skip-alias
-
`--read-alias' が指定されても無視します。 which に対するエイリアスや関数の中で `--read-alias'
オプションを利用している場合であっても、 明示的に通常の実行ファイルを検索する場合に利用できます。
- --read-functions
-
標準入力からシェル関数定義を読み込んで、合致したものを標準出力します。 これはwhich
そのものを含むシェル関数において、本オプションを合わせて利用すると便利です。 たとえば以下です。
which() { declare -f | which --read-functions $@ }
export -f which
- --skip-functions
-
`--read-functions' が指定されても無視します。 which に対するエイリアスや関数の中で
`--read-functions' オプションを利用している場合であっても、明示的に通常の実行ファイルを検索する場合に利用できます。
- --skip-dot
-
PATH 内のディレクトリのうち、ドットで始まるディレクトリは除外します。
- --skip-tilde
-
チルダで始まる PATH 内のディレクトリ、および HOME ディレクトリ内に存在する実行ファイルは除外します。
- --show-dot
-
PATH 内にドットで始まるディレクトリがあって、合致した実行ファイルがその中に見つかった場合には、フルパスでなく "./programname"
と表示します。
- --show-tilde
-
ディレクトリが HOME に合致した場合、チルダを表示します。 このオプションは root ユーザーが実行した際には無視されます。
- --tty-only
-
tty 上でない場合、この右側に指定されたオプションの実行を停止します。
- --version,-v,-V
-
バージョン情報を標準出力して正常終了します。
- --help
-
利用方法を標準出力して正常終了します。
返り値
which は検索に失敗した引数の数を返します。 また `programname' が指定されなかった場合は -1 を返します。
例
このユーティリティーのお薦めの使い方は、 which に対するエイリアス (C シェル) やシェル関数 (Bourne シェル)
を追加して利用する方法です。 たとえば以下です。
[ba]sh の場合:
which ()
{
(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
export -f which
[t]csh の場合:
alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
こうすることで、プロンプトから実行した場合には、見やすいように ~/ や ./ を出力します。
スクリプトから利用した場合には、そのままフルパスで出力します。
> which q2
~/bin/q2
> echo `which q2`
/home/carlo/bin/q2
バグ
HOME ディレクトリは、環境変数 HOME
を調べることで決定されますが、この変数が存在しない場合には、その処理がキャンセルされます。which は 2
つの同等のディレクトリであっても、その 1 つにシンボリックリンクを使ったパスが含まれている場合に、別のディレクトリと取り扱ってしまいます。
著者
Carlo Wood <carlo@gnu.org>
関連項目
bash(1)
Index
- 名前
-
- 書式
-
- 説明
-
- オプション
-
- 返り値
-
- 例
-
- バグ
-
- 著者
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 16:46:40 GMT, November 24, 2023