このファイルは ‘which’ version 2.x を説明するものです。 Copyright © 2000 - 2015, by Carlo Wood, Run on IRC RSA-1024 0x624ACAD5 1997-01-26 Sign & Encrypt Fingerprint16 = 32 EC A7 B6 AC DB 65 A6 F6 F6 55 DD 1C DC FF 61 Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. ‘which’: コマンドのフルパス表示 ******************************* ‘which’ プログラムは(シェル)コマンドのフルパスを表示します。 This file documents ‘which’ version 2.21, updated 20 March 2015. 1 ‘which’ プログラム ******************** ‘which’ は 1 つまたは複数の引数を取ります。その引数それぞれに対して、そ の引数がシェルプロンプトから入力された際に、実行されることになる実行モジ ュールのフルパスを stdout に出力します。 これを実現する際には、環境変数 ‘PATH’ に列記されたディレクトリ内から実行ファイルやスクリプトを検索しま す。 これは ‘bash(1)’ と同じアルゴリズムを用いています。 2 ‘which’ の実行 **************** ‘which’ の実行書式は以下のとおりです。 which [options] [--] programname [...] 3 オプションの概要 ****************** ‘--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’ 利用方法を標準出力して正常終了します。 4 返り値 ******** ‘which’ は、処理に失敗した引数の数を返します。また ‘programname’ が指定 されなかった場合は -1 を返します。 5 例 **** 本ユーティリティーを利用するには、‘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 6 バグ ****** ‘HOME’ ディレクトリは、環境変数 ‘HOME’ を調べることで決定されますが、こ の変数が存在しない場合には、その処理がキャンセルされます。‘which’ は 2 つ の同等のディレクトリであっても、その 1 つにシンボリックリンクを使ったパ スが含まれている場合に、別のディレクトリと取り扱ってしまいます。 7 関連項目 ********** ‘bash(1)’ さくいん ******** * Menu: * --all: オプションの概要. (line 39) * --help: オプションの概要. (line 92) * --read-alias: オプションの概要. (line 44) * --read-functions: オプションの概要. (line 56) * --show-dot: オプションの概要. (line 76) * --show-tilde: オプションの概要. (line 81) * --skip-alias: オプションの概要. (line 51) * --skip-dot: オプションの概要. (line 68) * --skip-functions: オプションの概要. (line 63) * --skip-tilde: オプションの概要. (line 72) * --tty-only: オプションの概要. (line 85) * --version: オプションの概要. (line 89) * -a: オプションの概要. (line 39) * -i: オプションの概要. (line 44) * -v: オプションの概要. (line 89) * -V: オプションの概要. (line 89) * aliases, handling of: 例. (line 104) * Bugs, known: バグ. (line 131) * Command line Options: オプションの概要. (line 39) * Description of which: which プログラム. (line 23) * Examples: 例. (line 104) * Options, command line: オプションの概要. (line 39) * Overview of command line options: オプションの概要. (line 39) * Return value of which: 返り値. (line 98) * Synopsis: which の起動. (line 32) * which の実行: which の起動. (line 32) ‘which’: コマンドのフルパス表示 1 ‘which’ プログラム 2 ‘which’ の実行 3 オプションの概要 4 返り値 5 例 6 バグ 7 関連項目 さくいん