sh: Zeitbefehl nicht gefunden

sh: Zeitbefehl nicht gefunden

In der LLVM 3.0-Testsuite erhalte ich bei Bash den folgenden Fehler:

sh: time command not found

Der Code lautet:

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

Wo $TIMEIT = time.

Ich habe versucht, zu wechseln sh -c, evalaber der Fehler bestand weiterhin.

Beim Versuch, diesen Fehler zu beheben, ist mir etwas Merkwürdiges aufgefallen, das möglicherweise zur Lösung des Problems beiträgt, möglicherweise aber auch nicht:

Laufen sh -c "time"funktioniert, sh -c "time -p"tut es aber nicht.

Hat jemand von euch eine Idee, warum dieser Fehler auftritt und wie ich ihn lösen kann?

Antwort1

timeist ein reserviertes Wort in Shells. Um den eigentlichen Befehl zu verwenden, versuchen Sie:

command time [options] [command]

oder:

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

Quelle:

Antwort2

Das Programm wird per timePaket bereitgestellt.
Installieren Sie es beispielsweise so:

apt-get install time

Diese Antwort enthält den Kommentar vonAbonnieren.

NOTIZ:

Ich fand diesen Fix nützlich, als ich GitHub Actions mit einem Skript verwendete, das verwendet wurde time -p. Also habe ich Folgendes in der ymlDatei gemacht:

      - 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

verwandte Informationen