Veja isso
$ 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
Eu trabalhei em torno disso exportando a variável de antemão, mas estou curioso para saber por que isso acontece.
(Ubuntu e Bash)
Quando você usou o
ENV=val
formulário, você executou um comando diferente do bash internotime
(você executou o programa GNU time de/usr/bin/time
).Se você quiser usar o shell embutido, use-o assim:
Isso está intimamente relacionado ao motivo por trás de uma pergunta recente: Por que um grupo de comandos de chave precisa de espaços após a chave de abertura no POSIX Shell Grammar?
time
, como{
, é uma palavra reservada e uma palavra reservada não pode aparecer após a atribuição de variável.Como
time
não é reconhecido como uma palavra reservada emTESTVAR=TEST time echo 1
, ele passa pela execução normal de comandos, procurando por aliases, funções e (neste caso, terminando com) execução de comandos externos.