$ \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
),这一事实可能会误导您认为可以使用反斜杠来抑制内置函数。不,\true
仍然运行内置函数,而不是 GNU true
。这是非常明显的\:
;它运行:
内置的,而不是外部:
可执行文件最有可能的您的操作系统中不存在(比较type -a :
;type -a true
或尝试env :
)。
help true
描述了内置函数,但没有提到任何选项。
如何
true
决定采取哪种行为?
似乎内置函数会忽略所有命令行参数,无论它们是什么。 GNUtrue
忽略所有命令行参数,除非只有一个参数并且该参数是--help
or --version
。
在 Zsh 中,故事基本相同。