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

関連情報