Hitachi

Advanced Shell 


8.4.40 whichコマンド(外部コマンドのパスを取得する)

形式

which[-a]コマンド名 ...

機能

環境変数PATHに設定されているコマンド検索パスから,実行する外部コマンドのコマンドパスを取得します。取得したコマンドパスは標準出力に出力します。

引数

-a

環境変数PATHに設定されているコマンド検索パスの中から,実行できるすべてのコマンドパスを取得して出力します。

-aオプションを指定しない場合は,最初に取得されたコマンドパスだけを出力します。

コマンド名

コマンドパスを取得したい外部コマンド名を指定します。複数指定できます。

指定した外部コマンドのコマンドパスが見つからなかった場合は,標準エラー出力に外部コマンドのコマンドパスが見つからなかったことを示すメッセージが出力されます。

コマンドパスの検索規則

外部コマンドのコマンドパスは次の規則で検索します。

Windowsの場合
外部コマンドの検索対象パス

環境変数PATHに設定されているコマンド検索パスに対して,外部コマンドを検索します。環境変数PATHに複数のコマンドパスが設定されている場合は,先頭のコマンドパスから順番に検索します。なお,whichコマンドの実行者に外部コマンド格納ディレクトリの読み込み権限がない場合,そのディレクトリはコマンドパスの検索対象にはなりません。

コマンドパスの出力対象となる外部コマンド

whichコマンドの実行者に外部コマンド格納ディレクトリの読み込み権限があればコマンドパスを出力します。外部コマンドの実行権限の有無は判断されません。

コマンドパスの出力対象となる外部コマンドは拡張子が「.com」,「.exe」,「.cmd」,「.bat」の実行ファイルです。

指定した外部コマンドに拡張子が含まれない場合,外部コマンド名に環境変数PATHEXTに定義されている順に拡張子を付けて外部コマンドを検索します。対象となる拡張子は「.com」,「.exe」,「.cmd」,「.bat」です。詳細については,「5.1.11 外部コマンドの指定」を参照してください。

UNIXの場合
外部コマンドの検索対象パス

環境変数PATHに設定されているコマンド検索パスに対して外部コマンドを検索します。環境変数PATHに複数のコマンドパスが設定されている場合は,先頭のコマンドパスから順に検索します。なお,whichコマンドの実行者に外部コマンド格納ディレクトリ(パスを構成するすべてのディレクトリ)の検索権限がない場合,そのディレクトリはコマンドパスの検索対象にはなりません。

コマンドパスの出力対象となる外部コマンド

whichコマンドの実行者に外部コマンドの実行権限があれば,実行できる外部コマンドと判断し,コマンドパスを出力します。外部コマンドの実行権限がない場合,その外部コマンドはコマンドパスの出力対象にはなりません。

引数に指定したコマンド名にパスが含まれている場合

Windowsの場合

whichコマンドの実行者に外部コマンド格納ディレクトリの読み込み権限があればコマンドパス名を出力します。外部コマンドの実行権限の有無は判断されません。

外部コマンド格納ディレクトリの読み込み権限がない場合は外部コマンドのコマンドパスが見つからなかったことを示すメッセージを出力します。

コマンドパスの出力対象となる外部コマンドは拡張子が「.com」,「.exe」,「.cmd」,「.bat」の実行ファイルです。

指定した外部コマンドに拡張子が含まれない場合は,外部コマンド名に環境変数PATHEXTに定義されている順に拡張子を付けます。対象となる拡張子は「.com」,「.exe」,「.cmd」,「.bat」です。

指定した外部コマンドがシンボリックリンクの場合は,次のように動作します。

  • シンボリックリンクとリンク先ファイルの両方の拡張子が「.com」,「.exe」,「.cmd」,「.bat」であることで実行権限があると判断します。

  • シンボリックリンクに拡張子が含まれていない場合は,環境変数PATHEXTに定義されている順に拡張子を付けます。ただし,リンク先のファイルは拡張子の付加の対象外です。対象となる拡張子は「.com」,「.exe」,「.cmd」,「.bat」です。

UNIXの場合

whichコマンドの実行者に外部コマンド格納ディレクトリ(パスを構成するすべてのディレクトリ)の検索権限と外部コマンドの実行権限がある場合,引数に指定したコマンド名を出力します。これらの権限がない場合は,外部コマンドのコマンドパスが見つからなかったことを示すメッセージを出力します。

終了コード

終了コード

意味

0

正常終了

1

エラー終了。

外部コマンドのコマンドパスが見つかりませんでした。または,複数の外部コマンドを検索した際,コマンドパスが見つからなかった外部コマンドがありました。

2

エラー終了。

  • 不正なオプションを指定しました。

  • 環境変数PATHが定義されていません。

  • Windowsの場合,環境変数PATHEXTが定義されていません。

注意事項

使用例