time
como uma palavra-chave GNU Bash tem uma localização muito específica onde é aceita, veja por exemplo a sintaxe para uma construção de pipeline de comando:
The format for a pipeline is
[time [-p]] [!] command1 [| command2 ...]
Isto faz o hardcode da posição da palavra-chave fora das expansões (como commandN será onde os parâmetros e variáveis serão expandidos). De fato, também a semântica se aplica a todo o pipeline, não ao comando, então provavelmente é por isso que deve ser uma palavra-chave.
Há um shell integrado em times
(em POSIX a especial interno ), para isso a expansão funciona já que a primeira palavra pode ser um executável ou um shell embutido.
Como alternativa, GNU coreutils contém um executável /bin/time
.
Na verdade, time
não é palavra reservada em POSIX Shell (embora o bash o reconheça no modo posix de qualquer maneira ( a menos que um -
seja seguido por razões não óbvias)).
Dentro de uma expressão eval
, as palavras-chave são reconhecidas por bash , portanto, isso pode ser usado para aprimorar dinamicamente comandos com a criação de perfil de tempo. (No entanto, por outro lado, exige uma rodada adicional de cotação)