command -v "program" >/dev/null 2>&1
program
-statementにインストールされていることをPOSIXで確認する必要がある場合は、この構文を使用してくださいif
。
ヘルプページでは明確ではありません。パスだけをチェックしますか、それとも実行可能ビットもチェックしますか?
$ command --help
command: command [-pVv] command [arg ...]
...
-v print a description of COMMAND similar to the `type' builtin
...
ありがとうございます。
答え1
command -v
PATHを使用して実行可能ファイルを見つけます。
また、権限も確認します。試してもcommand -v a_non_executable_file
何も印刷されません。
試してみると、システムコールが実行されているstrace bash -c 'command -v grep'
ことがわかりますaccess(2)
(このシステムコールはファイルに対するユーザーの権限を確認します)。command -v
実行できる最初のファイルをPATHで検索します。