time
コマンドを使用して、外部のGNU時間コマンド/usr/bin/time
ではなく、組み込みのtime
を使用する必要がある状況に遭遇しました。したがって、どうすればよいですか?どこかでenable
やcommand
を使用すると効果があることがわかりましたが、効果がありませんでした。
これはユースケースです:
watch "time ls"
外部の/usr/bin/time
コマンドを使用しますが、これは不要です!これは、次のように、ターミナルでtime ls
を実行したときにtime
が内部bash関数を呼び出すと発生します。
$ time ls
正反対の要求がここで答えられていることに注意してください:
2つのコマンドには大きな違いがあります。内部のtime
の方が正確ですが(必要です)、外部のコマンドにはより多くのオプションがあります(必要ありません)。
デフォルトでは、watch
は/bin/sh -c '...'
を使用してコマンドを実行するため、表示される出力は/bin/sh
がtime
コマンドをどのように解釈するかです。あなたの/bin/sh
には組み込みのtime
がないようです。
別のシェルでコマンドを実行するには、-x
オプションを使用してデフォルトを削除し、組み込みたいシェルの明示的な呼び出しを追加します。
watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'
watch
をどのように実行しても、監視しているコマンドはwatch
コマンドを実行したシェルの子ではないため、シェルの設定は直接関係ありません。