Ответы:
Если вы используете Bash (или другую оболочку, похожую на Bourne), вы можете использовать type.
type command
сообщит вам, commandявляется ли встроенная оболочка, псевдоним (и, если да, псевдонимом чего-либо), функцией (и если да, то она перечислит тело функции) или хранится в файле (и если да, путь к файлу) ,
Для получения дополнительной информации о «двоичном» файле, вы можете сделать
file "$(type -P command)" 2>/dev/null
Это ничего не даст, если commandвстроен псевдоним, функция или оболочка, но вернет больше информации, если это скрипт или скомпилированный двоичный файл.
Ссылки
В ЗШ вы можете проверить 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'