Linux
test
和 [
- 不同的二進製文件,有什麼區別嗎?
我在回答另一個問題時注意到
test
and[
是不同的二進製文件,但是[
聯機幫助頁顯示了test
’s. 除了結尾的要求]
,還有什麼不同嗎?如果不是,為什麼它們是分開的二進製文件而不是符號連結的?(它們也是bash
內置的,bash
也沒有顯示出區別。)
原始碼解釋了不同之處在於它如何處理選項
--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
內置版本中,唯一的區別是最後[
需要]
。