看一下这个
$ time echo 1
1
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ TESTVAR=TEST time echo 1
1
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1932maxresident)k
0inputs+0outputs (0major+74minor)pagefaults 0swaps
我已经通过预先导出变量来解决这个问题,但我很想知道这是为什么。
(ubuntu 和 bash)
当您使用该表单时,您运行的命令与内置
ENV=val
的 bash 不同(您从 运行 GNU 时间程序)。time
/usr/bin/time
如果要使用内置的 shell,请像这样使用它:
这与最近一个问题背后的原因密切相关:为什么大括号命令组在 POSIX Shell Grammar 中的左大括号后需要空格?
time
, like{
, 是保留字,变量赋值后不能出现保留字。由于
time
不被识别为 中的保留字TESTVAR=TEST time echo 1
,因此它会进行正常的命令执行,查找别名、函数和(在本例中以)外部命令执行。