test
다른 질문에 대한 답변에서 과 는 [
다른 바이너리 라는 것을 알았지 만 [
맨페이지에서는 test
엔딩이 필요한 것 외에 ]
다른 점이 있습니까 ? 그렇지 않다면 왜 심볼릭 링크가 아닌 별도의 바이너리입니까? (또한 bash
내장되어 있으며 bash
차이가 없습니다.)
답변1
이것소스 코드--help
옵션을 처리하는 방법 의 차이점을 설명하세요 .
/* Recognize --help or --version, but only when invoked in the "[" form, when the last argument is not "]". Use direct parsing, rather than parse_long_options, to avoid accepting abbreviations. POSIX allows "[ --help" and "[ --version" to have the usual GNU behavior, but it requires "test --help" and "test --version" to exit silently with status 0. */
데모
$ /usr/bin/test --help
$
$ /usr/bin/[ --help
Usage: test EXPRESSION
or: test
or: [ EXPRESSION ]
or: [ ]
or: [ OPTION
Exit with the status determined by EXPRESSION.
[...]
bash
내장 버전 에서는 말씀하신 대로 마지막에 [
있어야 한다는 점만 다릅니다.]
답변2
일반적으로 하드 링크가 포함된 동일한 바이너리입니다. 셸에 따라 테스트를 위해 바이너리 대신 내부 구현을 사용할 수도 있습니다 test
. [
이는 프로세스 생성 시 더 효율적이며 test
바이너리 프로그램에서 제공하는 것과 다른 옵션을 제공할 수 있습니다.
다양한 호출 형식 외에도 모두 동일한 기능을 제공합니다.