Bug 36527 - does not recognize "time" and TIMEFORMAT
Summary: does not recognize "time" and TIMEFORMAT
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: sh (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-04-05 21:36 MSK by alexey.tourbin
Modified: 2019-05-29 14:55 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description alexey.tourbin 2019-04-05 21:36:34 MSK
Мужчины, после обновления bash у меня сломался скрипт, точнее появились в нем дефекты, который скачивает и перекодирует видео с иностранных сайтов.  В скрипте в частности написано:

TIMEFORMAT="${I//\%/%%}: time ffmpeg: %0lR elapsed %P%% cpu"; time \
"${ffmpeg[@]}" -i $tmp-a.mp4 -r 25 -i "$4" -map 1:v -map 0:a -c:a copy \

Почему-то в вашем самосборном шелле time не распознается как особая конструкция, вместо нее всегда запускается /usr/bin/time.

$ strace -f -e trace=execve sh -c 'time echo X' |grep execve
execve("/usr/bin/time", ["time", "echo", "X"], 0x13fea30 /* 63 vars */) = 0

Между тем time жестко зашито в определение шелл-синтаксиса.  Даже интересно, как это у вас такой битый шелл собрался.

$ info bash |grep 'time .*-p'
     [time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ...
Comment 1 Dmitry V. Levin 2019-04-06 02:07:11 MSK
(In reply to comment #0)
> Почему-то в вашем самосборном шелле time не распознается как особая
> конструкция, вместо нее всегда запускается /usr/bin/time.

У нас традиционно bash собран c --disable-command-timing, примерно с 1999 года:
* Tue Jul 8 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>
...
- disable built-in time command (incompatible with standard POSIX time command)

> $ strace -f -e trace=execve sh -c 'time echo X' |grep execve

Зачем этот grep?  strace выводит trace в stderr.
Comment 2 alexey.tourbin 2019-05-22 17:40:44 MSK
Опция противоречит документированному поведению в 'info bash'.  В других дистрибутивах bash собран без этой опции.
Comment 3 Vitaly Chikunov 2019-05-22 17:53:59 MSK
Я за возвращение time built-in'а в bash.
Comment 4 Dmitry V. Levin 2019-05-22 17:56:37 MSK
(In reply to comment #3)
> Я за возвращение time built-in'а в bash.

Только с поддержкой -f и -o из GNU time, иначе я против.
Comment 5 Anton Farygin 2019-05-22 18:01:26 MSK
А разве ты не можешь энфорсить запуск gnu time по пути ?