`command -v program`は常に実行可能ですか?

`command -v program`は常に実行可能ですか?

command -v "program" >/dev/null 2>&1program-statementにインストールされていることをPOSIXで確認する必要がある場合は、この構文を使用してくださいif


ヘルプページでは明確ではありません。パスだけをチェックしますか、それとも実行可能ビットもチェックしますか?

$ command --help
command: command [-pVv] command [arg ...]
...
      -v    print a description of COMMAND similar to the `type' builtin
...

ありがとうございます。

答え1

command -vPATHを使用して実行可能ファイルを見つけます。

また、権限も確認します。試してもcommand -v a_non_executable_file何も印刷されません。

試してみると、システムコールが実行されているstrace bash -c 'command -v grep'ことがわかりますaccess(2)(このシステムコールはファイルに対するユーザーの権限を確認します)。command -v実行できる最初のファイルをPATHで検索します。

関連情報