sh: comando de tempo não encontrado

sh: comando de tempo não encontrado

No conjunto de testes llvm 3.0, estou recebendo o seguinte erro no bash:

sh: time command not found

O código é:

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

onde $TIMEIT = time.

Tentei mudar sh -cpara evalmas o erro continuou.

Ao tentar resolver esse erro, percebi algo engraçado que pode ou não ajudar a resolver isso:

Correr sh -c "time"funciona, mas sh -c "time -p"não funciona.

Algum de vocês tem alguma ideia de por que esse erro acontece e como eu poderia resolvê-lo?

Responder1

timeé uma palavra reservada em shells. Para usar o comando real, tente:

command time [options] [command]

ou:

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

Fonte:

Responder2

O programa é fornecido por timepacote.
Instale-o, por exemplo, assim:

apt-get install time

Esta resposta consagra o comentário dejonhattan.

OBSERVAÇÃO:

Achei essa correção útil quando estava usando GitHub Actions com um script que usava time -p. Então eu fiz isso no ymlarquivo:

      - 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

informação relacionada