Bashにシェル組み込みコマンドの代わりに外部 `time`コマンドを使用させる。

Bashにシェル組み込みコマンドの代わりに外部 `time`コマンドを使用させる。

bashにシェルキーワードの代わりにデフォルトでタイムバイナリ(/usr/bin/time)を使用させるにはどうすればよいですか?

which time戻り/usr/bin/time
type time戻りtime is a shell keyword
実行はtime明らかにシェルキーワードを実行しています。

$ time

real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
   [--portability] [--format=format] [--output=file] [--version]
   [--quiet] [--help] command [arg...]

enable -n time返品bash: enable: time: not a shell builtin

ベストアンサー1

シェル組み込み機能を使用すると、一般的なcommandルックアッププロセスをバイパスし、他の可能性(シェル組み込み機能、エイリアスなど)に関係なく、特定のコマンドを外部コマンドとして実行できます。これは通常、システム間で移植可能でなければならないスクリプトで行われます。ただし、略称を使用する方が一般的です\(たとえば、orの\rm代わりに、特に後者のように未知の項目にエイリアスを割り当てることができるため)。command rmrmrm -i

$ time

real    0m0.000s
user    0m0.000s
sys 0m0.000s
$ command time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format=format] [--output=file] [--version]
       [--quiet] [--help] command [arg...]
$ 

次のようにエイリアスと一緒に使用できます。

$ alias time='command time'
$ time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format=format] [--output=file] [--version]
       [--quiet] [--help] command [arg...]
$ 

たとえば、バイナリへのフルパスをalias time=/usr/bin/time指定せずに一般的なパス検索メカニズムに置き換えるという利点があります。time

コマンドalias自体は、たとえば ~/.bashrc または /etc/bash.bashrc に入れることができます (後者はシステムのすべてのユーザーにグローバルです)。

逆の場合(エイリアスが定義されている場合は組み込みシェルを強制的に使用するため)次のようなものを使用できます。builtin timeこれは通常の検索プロセスを再び無視し、指定された組み込みシェルを実行します。 Bashのマニュアルページでは、これは一般的に呼ばれる関数を介してカスタム機能を提供するためにcd使用されます。cdcd

おすすめ記事