GNU Coreutils `\time --version` 및 `/bin/true --version`은 작동하지만 `\true --version`은 작동하지 않습니까?

GNU Coreutils `\time --version` 및 `/bin/true --version`은 작동하지만 `\true --version`은 작동하지 않습니까?
$ \time --version
time (GNU Time) UNKNOWN
Copyright (C) 2018 Free Software Foundation, Inc.
...

$ /bin/true --version
true (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
...

$ \true --version

$ echo 'nothing was printed on the previous line'

저는 Ubuntu 22.04, GNU bash, 버전 5.1.16(zsh 5.9에서도 테스트됨)을 사용하고 있습니다.

답변1

큰 타격을 입은 상태에서time키워드입니다(참조 type time) \time그렇게 해석되지는 않습니다. \time귀하의 경우에는 Bash가 외부 실행 파일을 실행하도록 만드십시오 GNU time.

하지만 true이는 내장되어 있습니다(참고자료 참조 type true). 백슬래시를 사용하여 time키워드(또는 try 등의 키워드 ) 를 억제할 수 있다는 사실이 \if백슬래시를 사용하여 내장 함수를 억제할 수 있다고 오해할 수 있습니다. 아니요, \trueGNU가 아닌 내장 기능을 계속 실행합니다 true. 이는 매우 분명합니다 . 외부 실행 파일 이 아닌 내장 파일을 \:실행합니다.::아마도운영 체제에 존재하지 않습니다(비교 type -a :또는 type -a true시도 env :).

help true내장 기능이 설명되지만 옵션은 언급되지 않습니다.

true어떤 조치를 취해야 할지 어떻게 결정하나요 ?

내장 함수는 그것이 무엇이든 상관없이 모든 명령줄 인수를 무시하는 것 같습니다. GNU는 true인수가 하나만 있고 해당 인수가 --helpor 가 아닌 한 모든 명령줄 인수를 무시합니다 --version.

Zsh에서는 이야기가 기본적으로 동일합니다.

관련 정보