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 -c
para eval
mas 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 time
pacote.
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 yml
arquivo:
- 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