$ \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 进行了测试)。
在 Bash 中
time
是一个关键字(参见 参考资料type time
)并且\time
不被这样解释。\time
使 Bash 运行外部可执行文件,在您的情况下是 GNUtime
。但它
true
是一个内置的(参见 参考资料type true
)。事实上,您可以使用反斜杠来抑制time
关键字(或任何关键字,例如 try\if
),这一事实可能会误导您认为可以使用反斜杠来抑制内置函数。不,\true
仍然运行内置函数,而不是 GNUtrue
。这是非常明显的\:
;它运行:
内置的,而不是外部可执行文件,外部:
可执行文件很可能不存在于您的操作系统中(与type -a :
;type -a true
或 try相比env :
)。help true
描述了内置函数,但没有提到任何选项。似乎内置函数会忽略所有命令行参数,无论它们是什么。GNU
true
忽略所有命令行参数,除非只有一个参数并且该参数是--help
or--version
。在 Zsh 中,故事基本相同。