timeпоскольку ключевое слово GNU Bash имеет очень конкретное место, где принимается, см., например, синтаксис для конструкции конвейера команд:
Формат для конвейера
[time [-p]] [!] command1 [| command2 ...]
Это жестко закодирует позицию ключевого слова вне расширений (поскольку команда N будет там, где раскрываются параметры и переменные). Фактически, семантика применяется ко всему конвейеру, а не к команде, поэтому, вероятно, именно поэтому это должно быть ключевое слово.
Существует встроенная оболочка times(в POSIX - специальная встроенная ), для этого расширение работает, поскольку первое слово может быть исполняемым или встроенным в оболочку.
В качестве альтернативы GNU coreutils содержит /bin/timeисполняемый файл.
Фактически timeэто не зарезервированное слово в POSIX Shell (хотя bash в любом случае распознает его в режиме posix (если не -следует по неочевидным причинам)).
Внутри evalвыражения ключевые слова распознаются bash , поэтому это можно использовать для динамического улучшения команд с профилированием времени. (Однако, с другой стороны, это требует дополнительного раунда цитирования)
which time? Возможно, вы не установилиtimeкоманду.