command がありますがfoo
、それがバイナリなのか、関数なのか、エイリアスなのか、どうすればわかりますか?
答え1
Bash(または他のBourne様シェル)を使用している場合type
。
type command
command
シェルが組み込みであるか、エイリアスが何であるか(そうであればエイリアスが何であるか)、関数(そうであれば関数の本文がリストされています)であるか、それともファイルに保存されているか(そうであればそのファイルへのパス)を伝えます。ファイル)。
関数のエイリアスなど、入れ子になった状況がある可能性があります。その場合、実際の型を見つけるには、まずその型のエイリアスを解放する必要があります。
unalias command; type command
「バイナリ」ファイルの詳細については、次の手順を実行してください。
file "$(type -P command)" 2>/dev/null
command
エイリアス、関数、またはシェル組み込みの場合は何も返されませんが、スクリプトまたはコンパイルされたバイナリの場合はより多くの情報が返されます。
引用する
答え2
zshでは、配列を調べることがaliases
できfunctions
ます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'
編集:確認zsh/パラメータモジュール利用可能なアレイの完全なリストに関するドキュメント。
答え3
答えは、使用するシェルによって異なります。
zshの場合、シェルの組み込み機能がwhence -w
望むものを正確に伝えます。
例えば
$ whence -w whence
whence : builtin
$ whence -w man
man : command