`time echo`没有输出

`time echo`没有输出

我正在使用 Mac,并且正在尝试计算命令执行的时间。

如果我做

time echo

它没有任何输出

但如果我这样做

time ls

它确实给了我时间函数的输出

知道为什么会发生这种情况吗?

更新:事实证明这是因为我正在使用 zsh,并且oh-my-zsh已安装。在 bash 中运行良好,但在 zsh 中没有输出。知道为什么吗?

答案1

在 zsh 中,time关键字对内置函数(或其他类似的 shell 内部构造)没有影响。从这个邮件列表帖子:

附加说明:应用于当前 shell 中执行的任何构造的内置时间将被静默忽略。因此,虽然在语法上可以在 time 关键字之后立即放置一个开头花句或重复循环等,但您将无法获得计时统计信息。您必须使用括号来强制执行子 shell,然后对其进行计时。

$ time echo

$ time (echo)

( echo; )  0.00s user 0.00s system 51% cpu 0.001 total

答案2

time 命令将产生命令 echo。在 zsh 下,这是内置于 shell 中的,因此不会运行外部二进制文件。在 bash 下,echo 将运行位于 /bin/echo 中的 echo 二进制文件。

总之,zsh 内置了 echo,bash 将从 echo 二进制文件中生成一个进程。

相关内容