Как проверить, является ли команда псевдонимом, функцией или двоичным файлом?

Ответы:

23

Если вы используете Bash (или другую оболочку, похожую на Bourne), вы можете использовать type.

type command

сообщит вам, commandявляется ли встроенная оболочка, псевдоним (и, если да, псевдонимом чего-либо), функцией (и если да, то она перечислит тело функции) или хранится в файле (и если да, путь к файлу) ,

Для получения дополнительной информации о «двоичном» файле, вы можете сделать

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

Это ничего не даст, если commandвстроен псевдоним, функция или оболочка, но вернет больше информации, если это скрипт или скомпилированный двоичный файл.

Ссылки

Джозеф Р.
источник
3

Ответ зависит от того, какую оболочку вы используете.

Для zsh встроенная оболочка whence -wскажет вам именно то, что вы хотите

например

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
number5
источник
1

В ЗШ вы можете проверить 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'
ericbn
источник