В справочном руководстве Bash
Использование
time
как зарезервированное слово позволяет синхронизацию встроенных команд оболочки , функции оболочки и трубопроводам . Внешняяtime
команда не может рассчитать это легко.
Не могли бы вы объяснить, почему цитата говорит это?
Это из-за разницы между зарезервированным словом и командой, а не только в случае
time
? Например, как оболочка bash анализирует или интерпретирует их по-разному?Или это ограничено только случаем
time
?В следующих примерах
почему внешняя сторона
time
работает со встроенной оболочкой и конвейером, а в кавычках говорится, что «они не могут легко их определить»?Внешний
time
на встроенной оболочке :$ /usr/bin/time echo hello hello 0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1676maxresident)k 0inputs+0outputs (0major+78minor)pagefaults 0swaps
Внешний
time
по трубопроводу :$ /usr/bin/time sleep 10 | sleep 5 0.00user 0.00system 0:10.00elapsed 0%CPU (0avgtext+0avgdata 1776maxresident)k 0inputs+0outputs (0major+79minor)pagefaults 0swaps
В следующем примере, почему внешняя
time
по функции оболочки терпят неудачу? Что означает вывод ошибки?$ function mytest () { sleep 10; } $ /usr/bin/time mytest /usr/bin/time: cannot run mytest: No such file or directory Command exited with non-zero status 127 0.00user 0.00system 0:00.03elapsed 0%CPU (0avgtext+0avgdata 1252maxresident)k 32inputs+0outputs (0major+30minor)pagefaults 0swaps
Кажется, что цитата относится не только к встроенным функциям оболочки, функциям оболочки и конвейерам, но и к группе команд :
$ time { echo hello; sleep 3; echo tim; } hello tim real 0m3.002s user 0m0.000s sys 0m0.000s $ /usr/bin/time { echo hello; sleep 3; echo tim; } bash: syntax error near unexpected token `}'
Почему оболочка говорит "bash: синтаксическая ошибка рядом с неожиданным токеном
}
" в случае команды/usr/bin/time
?