`command -v program` 总是可执行的吗?

`command -v program` 总是可执行的吗?

command -v "program" >/dev/null 2>&1如果我需要 POSIX-ly 找出它是否program安装在-statement 中,我正在使用该构造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 中搜索您可以执行的第一个文件。

相关内容