如何让 zsh 的 REPORTTIME 工作?(对于长时间运行的命令)

mpa*_*ada 5 zsh oh-my-zsh

这是我的 .zshrc:

export REPORTTIME=3

当我运行sleep 4它不输出任何东西。如果我更改为REPORTTIME=blablabla(或任何无意义的),它不会引发错误并开始表现为REPORTTIME=0,即返回所有事情所花费的时间。

有趣的是,如果我尝试,REPORTTIME=3s我会收到以下消息:

zsh: bad math expression: operator expected at `s' sleep 4 0.00s user 0.00s system 0% cpu 4.004 total

所以我得到了错误,但仍然是输出。

我试过RERPORTTIME="3",甚至REPORTTIME=1+2。这些都不起作用。

此外,如果我运行,python -c "import time; time.sleep(4)"我会得到相同的结果(所以问题不在于sleep)。

当然,我也尝试了其他值(除了 3)。

我正在使用 iterm2 运行 MacOS,而 zsh 是我的默认 shell。

Mic*_*ott 5

您需要将其显式设置为表示秒的非负整数;IE

% REPORTTIME=3
Run Code Online (Sandbox Code Playgroud)

设置为其他非负值也不适用于我的 Zsh v5.4.2。运行类似系统更新(例如,yaourt)之类的东西,然后就像我已经把time它前面一样。很滑!

所以你需要一个消耗一些用户/系统时间的命令;sleep才不是。尽管总经过时间足够长,但用户和系统时间不是:

% time sleep 3
sleep 3  0.00s user 0.00s system 0% cpu 3.002 total
Run Code Online (Sandbox Code Playgroud)

还有,没必要 export这个,因为它是由 Zsh 直接使用的。

您可以通过以下方式撤消/关闭此行为:

% unset REPORTTIME
Run Code Online (Sandbox Code Playgroud)

文档REPORTTIME来自man zshparam

如果非负,则用户和系统执行时间(以秒为单位)的组合时间大于此值的命令将为其打印计时统计信息。在行编辑器中执行的命令的输出被抑制,包括完成;在这种情况下,用 time 关键字显式标记的命令仍会导致打印摘要。