web-dev-qa-db-ja.com

外部コマンドではなく、bashで組み込みの「time」コマンドを使用する

timeコマンドを使用して、外部のGNU時間コマンド/usr/bin/timeではなく、組み込みのtimeを使用する必要がある状況に遭遇しました。したがって、どうすればよいですか?どこかでenablecommandを使用すると効果があることがわかりましたが、効果がありませんでした。

これはユースケースです:

watch "time ls"

外部の/usr/bin/timeコマンドを使用しますが、これは不要です!これは、次のように、ターミナルでtime lsを実行したときにtimeが内部bash関数を呼び出すと発生します。

$ time ls

正反対の要求がここで答えられていることに注意してください:

2つのコマンドには大きな違いがあります。内部のtimeの方が正確ですが(必要です)、外部のコマンドにはより多くのオプションがあります(必要ありません)。

12
Ho1

デフォルトでは、watch/bin/sh -c '...'を使用してコマンドを実行するため、表示される出力は/bin/shtimeコマンドをどのように解釈するかです。あなたの/bin/shには組み込みのtimeがないようです。

別のシェルでコマンドを実行するには、-xオプションを使用してデフォルトを削除し、組み込みたいシェルの明示的な呼び出しを追加します。

watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'

watchをどのように実行しても、監視しているコマンドはwatchコマンドを実行したシェルの子ではないため、シェルの設定は直接関係ありません。

13
user41515