`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에서 검색합니다.

관련 정보