time居然是bash/zsh的关键字

哎,没想到自己的知识还有这么个大的疏漏!

我们平时最常用的time竟然是bash/zsh的一个关键字!!一直以为time就是/usr/bin/time!

$ builtin time
bash: builtin: time: not a shell builtin
$ type time
time is a shell keyword

% builtin time
zsh: no such builtin: time
% type time
time is a reserved word

用strace也可以,strace一下看看有没有搜索PATH的过程就知道。

$ strace /bin/bash -c ‘time > /dev/null’

也可以证实time确实不是外部命令,不过它无法告诉我们到底是内置命令还是关键字。排除time是内置命令的另一个方法是看man手册,shell builtins里面并没有time。