Команда time описана в разделе 3.2.3 Pipelines https://www.gnu.org/software/bash/manual/bash.html, описание доступно также через help time. Команда time отсутствует в bash4, проверено на 9 и 10 платформах. Сборка из bash4-4.4.23-alt1.src.rpm, без патчей и спеков, дает bash с командой time. Сборка через rpm --rebuil bash4-4.4.23-alt1.src.rpm дает bash без команды time. Возможное объяснение в спеке: Tue Jul 8 1999 Thierry Vignaud <tvignaud@mandrakesoft.com> : "disable built-in time command (incompatible with standard POSIX time command)". 24 года прошло, причина все еще актуальна? Или причина в чем-то другом?
Команда time есть в отдельном пакете с аналогичным названием: $ time Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose] [--portability] [--format=format] [--output=file] [--version] [--quiet] [--help] command [arg...] $ rpm -qf $(which time) time-1.7-alt4.x86_64
(In reply to xdsl from comment #0) > Возможное объяснение в спеке: Tue Jul 8 1999 Thierry Vignaud > <tvignaud@mandrakesoft.com> : "disable built-in time command (incompatible > with standard POSIX time command)". > > 24 года прошло, причина все еще актуальна? Или причина в чем-то другом? А этого, разве, мало? Или time в bash стал совместим с POSIX? На что ориентируются скрипты, использующие time, и как они себя поведут в bash, котрый пересборан с встроенной time?
Под рукой были Ubuntu, Debian, Mandrake, Astra - все собирают bash с командой time. Утилита меряет время до сотых секунды, команда - до тысячных. Может в 99 году это было несущественно, но сейчас - актуально.
Пусть мантейнер пакета решит.
Тогда уж сразу на bash5
(In reply to Anton Farygin from comment #5) > Тогда уж сразу на bash5 А в p11 что по умолчанию предполагается?
(Ответ для Sergey Y. Afonin на комментарий #6) > (In reply to Anton Farygin from comment #5) > > > Тогда уж сразу на bash5 > > А в p11 что по умолчанию предполагается? https://packages.altlinux.org/ru/sisyphus/srpms/bash-defaults/ p11 будет бранчеваться из нынешнего Sisyphus
(In reply to xdsl from comment #3) > Под рукой были Ubuntu, Debian, Mandrake, Astra - все собирают bash с > командой time. > Утилита меряет время до сотых секунды, команда - до тысячных. Может в 99 > году это было несущественно, но сейчас - актуально. time ничего не меряет, все измерения производит ядро, time лишь выводит результат измерений. Формат вывода time(1), в том числе точность, настраивается с помощью параметра --format. Появление bash builtin, перекрывающего time(1), создало бы проблемы пользователям bash, которые используют возможности time(1), отсутствующие в bash builtin. Не следует ломать обратную совместимсть без веских оснований.
(Ответ для Dmitry V. Levin на комментарий #8) > (In reply to xdsl from comment #3) > > Под рукой были Ubuntu, Debian, Mandrake, Astra - все собирают bash с > > командой time. > > Утилита меряет время до сотых секунды, команда - до тысячных. Может в 99 > > году это было несущественно, но сейчас - актуально. > > time ничего не меряет, все измерения производит ядро, time лишь выводит > результат измерений. Формат вывода time(1), в том числе точность, > настраивается с помощью параметра --format. Появление bash builtin, > перекрывающего time(1), создало бы проблемы пользователям bash, которые > используют возможности time(1), отсутствующие в bash builtin. Не следует > ломать обратную совместимсть без веских оснований. В time.c из https://git.altlinux.org/tasks/278099/build/4500/x86_64/srpm/time-1.7-alt4.src.rpm недвусмысленно сказано: ... 369 case 'E': /* Elapsed real (wall clock) time. */ 370 if (resp->elapsed.tv_sec >= 3600) /* One hour -> h:m:s. */ 371 fprintf (fp, "%ld:%02ld:%02ld", 372 resp->elapsed.tv_sec / 3600, 373 (resp->elapsed.tv_sec % 3600) / 60, 374 resp->elapsed.tv_sec % 60); 375 else 376 fprintf (fp, "%ld:%02ld.%02ld", /* -> m:s. */ 377 resp->elapsed.tv_sec / 60, 378 resp->elapsed.tv_sec % 60, 379 resp->elapsed.tv_usec / 10000); 380 break; ... Каким образом можно получить тысячные доли секунды таким кодом? Какой --format поможет?