为什么 Zsh
time
对于某些命令不起作用,
➜ ~ type time
time is a reserved word
➜ ~ time sleep 1
sleep 1 0.00s user 0.00s system 0% cpu 1.004 total
# not work for echo
➜ ~ time echo hello
hello
# not work with for
➜ ~ time for i in {1..3}; do curl -s http://baidu.com > /dev/null; done
但是如果更改为 bash 这些命令都受支持,
➜ ~ exec bash
bash-3.2$ type time
time is a shell keyword
$ time echo hello
hello
real 0m0.000s
user 0m0.000s
sys 0m0.000s
bash-3.2$ time for i in {1..3}; do curl -s http://baidu.com > /dev/null; done
real 0m0.099s
user 0m0.019s
sys 0m0.018s
zsh time 命令似乎仅在命令需要创建子进程时才写入时间统计信息。因此
time sleep
有效,time (echo hello)
也有效。例如,如果 time foo
是函数,则 foo
不会在 zsh 中输出计时信息,但如果 foo
是外部命令,则会输出计时信息。