sh: команда времени не найдена

sh: команда времени не найдена

В тестовом наборе llvm 3.0 я получаю следующую ошибку на bash:

sh: time command not found

Код:

if [ "x$RHOST" = x ] ; then
  ( sh -c "$ULIMITCMD $TIMEIT -p sh -c '$COMMAND >$OUTFILE 2>&1 < $INFILE; echo exit \$?'" ) 2>&1 \
| awk -- '\
BEGIN     { cpu = 0.0; }
/^user/   { cpu += $2; print; }
!/^user/  { print; }
END       { printf("program %f\n", cpu); }' > $OUTFILE.time

где $TIMEIT = time.

Я попытался изменить sh -cна , evalно ошибка осталась.

Пытаясь решить эту ошибку, я заметил кое-что забавное, что может помочь, а может и нет:

Бег sh -c "time"работает, но sh -c "time -p"не работает.

Есть ли у кого-нибудь из вас идеи, почему возникает эта ошибка и как ее решить?

решение1

time— зарезервированное слово в оболочках. Чтобы использовать настоящую команду, попробуйте:

command time [options] [command]

или:

/usr/bin/time [options] [command]

Источник:

решение2

Программа поставляется timeпакетом.
Установить ее можно, например, так:

apt-get install time

Этот ответ закрепляет комментарийджонхэттен.

ПРИМЕЧАНИЕ:

Я нашел это исправление полезным, когда использовал GitHub Actions со скриптом, который использовал time -p. Поэтому я сделал это в ymlфайле:

      - name: Install other packages
        run: |
          apt-get update
          
          # `time -p` is used for benchmarking tests.
          # This fixes error: 'sh: 1: time: not found':
          apt-get install time
      - name: Set up test database and run tests
        run: |
          script_with_time.sh

Связанный контент