Respostas:
Se você estiver no Bash (ou outro shell semelhante ao Bourne), poderá usar type
.
type command
informará se command
é um shell interno, alias (e, se for o caso, com alias do que), função (e se for o caso, listará o corpo da função) ou armazenado em um arquivo (e se for, o caminho para o arquivo) .
Para obter mais informações sobre um arquivo "binário", você pode fazer
file "$(type -P command)" 2>/dev/null
Isso não retornará nada se command
houver um alias, função ou shell incorporado, mas retornará mais informações se for um script ou um binário compilado.
Referências
Em zsh você pode verificar os aliases
, functions
e commands
arrays.
(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'
Há também builtins
, para comandos internos.
(( ${+builtins[foo]} )) && print 'foo is a builtin command'