为什么 /usr/bin/time 的完整路径会影响输出?

为什么 /usr/bin/time 的完整路径会影响输出?

我正在运行非常简单的命令:

[tester@centos-lvm ~]$ time cal > /dev/null

real    0m0.001s
user    0m0.000s
sys     0m0.001s

但是,如果我指定time可执行文件的完整路径,我会得到不同的输出:

[tester@centos-lvm ~]$ /usr/bin/time cal > /dev/null
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 928maxresident)k
0inputs+0outputs (0major+272minor)pagefaults 0swaps

我相信当我运行time(没有路径)时/usr/bin/time实际上会执行:

[tester@centos-lvm ~]$ which time
/usr/bin/time

man time告诉我们有两种不同的输出格式,该-p选项在它们之间进行选择。但我没有指定任何选项!我检查了别名,没有任何关于时间的信息。

这种行为是非常出乎意料并且非常奇怪的。有人可以解释为什么以及如何发生这种情况吗?

答案1

当您在time没有路径的情况下使用时,您可能会使用由内置 shell 提供的实用程序(请参阅特定 shell 的手册)。指定路径时,您肯定正在使用外部实用程序。

这两者在实现和产生的输出方面可能有所不同。

相关内容