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 rm
rm
rm -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
使用されます。cd
cd