En el conjunto de pruebas llvm 3.0, aparece el siguiente error en bash:
sh: time command not found
El código es:
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
dónde $TIMEIT = time
.
Intenté cambiar sh -c
a eval
pero el error continuó.
Mientras intentaba resolver este error, noté algo gracioso que puede o no ayudar a resolver esto:
Correr sh -c "time"
funciona pero sh -c "time -p"
no.
¿Alguno de ustedes tiene alguna idea de por qué ocurre este error y cómo lo solucionaría?
Respuesta1
time
es una palabra reservada en conchas. Para usar el comando real, intente:
command time [options] [command]
o:
/usr/bin/time [options] [command]
Fuente:
Respuesta2
El programa se proporciona por time
paquete.
Instálelo, por ejemplo, así:
apt-get install time
Esta respuesta consagra el comentario dejonhattan.
NOTA:
Esta solución me resultó útil cuando usaba GitHub Actions con un script que usaba time -p
. Entonces hice esto en el yml
archivo:
- 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