コマンドがエイリアス、関数、バイナリのいずれであるかをテストするにはどうすればよいですか?


回答:


23

Bash(または別のBourneのようなシェル)を使用してtypeいる場合は、を使用できます。

type command

commandシェルの組み込み、エイリアス(もしそうであれば、何にエイリアス)、関数(そして、もしそうなら関数本体をリストする)か、ファイルに格納されているか(もしそうなら、ファイルへのパス)を教えてくれます。

「バイナリ」ファイルの詳細については、次のことができます。

file "$(type -P command)" 2>/dev/null

commandエイリアス、関数、またはシェルがビルトインされている場合、これは何も返しませんが、スクリプトまたはコンパイルされたバイナリである場合、より多くの情報を返します。

参照資料


3

答えは、使用しているシェルによって異なります。

zshの場合、shell builtin whence -wは、あなたが望むものを正確に教えてくれます

例えば

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 

1

zshのでは、チェックすることができaliasesfunctionsおよびcommands配列を。

(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'

builtins組み込みコマンド用のもあります。

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.