私はMacを使用しており、コマンドを実行するのにかかる時間を計算しようとしています。
もし私がするなら
time echo
出力なし
しかし、私がそうするなら
time ls
それは私に時間関数の出力を与えます
なぜこれが起こるのかご存知ですか?
更新:これは私がzshを使用していてインストールしたためoh-my-zsh
に発生したことを示しています。 Bashではうまくいきますが、zshでは出力はありません。理由をご存知ですか?
答え1
zshでは、time
キーワードは組み込み機能(または他の同様のシェルの内部)には影響しません。 ~からこのメーリングリストの投稿:
追加の注:現在のシェルで実行されているすべての構成に適用される組み込み時間は自動的に無視されます。したがって、構文上のオープニングや繰り返しループなどを入れることは可能ですが、timeキーワードの直後にはタイミング統計は表示されません。サブシェルを強制的に実行して時間を測定するには、括弧を使用する必要があります。
$ time echo
$ time (echo)
( echo; ) 0.00s user 0.00s system 51% cpu 0.001 total
答え2
time コマンドは echo コマンドを生成します。 zshではこれがシェルに組み込まれているため、外部バイナリは実行されません。 Bashでは、echoは/ bin / echoにあるechoバイナリを実行します。
簡単に言えば、zshにはechoが組み込まれており、bashはechoバイナリファイルからプロセスを生成します。