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 commandhouver 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, functionse commandsarrays.
(( ${+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'