cha*_*umQ 9 shell bash ubuntu coreutils
$ \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'
Run Code Online (Sandbox Code Playgroud)
我使用的是 Ubuntu 22.04,GNU bash,版本 5.1.16(也使用 zsh 5.9 进行了测试)。
Kam*_*ski 19
在 Bash 中time是一个关键字(参见 参考资料type time)并且\time不被这样解释。\time使 Bash 运行外部可执行文件,在您的情况下是 GNU time。
但它true是一个内置的(参见 参考资料type true)。事实上,您可以使用反斜杠来抑制time关键字(或任何关键字,例如 try \if),这一事实可能会误导您认为可以使用反斜杠来抑制内置函数。不,\true仍然运行内置函数,而不是 GNU true。这是非常明显的\:;它运行:内置的,而不是外部:可执行文件,外部可执行文件很可能不存在于您的操作系统中(与type -a :;type -a true或 try相比env :)。
help true描述了内置函数,但没有提到任何选项。
如何
true决定采取哪种行为?
似乎内置函数会忽略所有命令行参数,无论它们是什么。GNUtrue忽略所有命令行参数,除非只有一个参数并且该参数是--helpor --version。
在 Zsh 中,故事基本相同。
| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |