Como testar se o comando é alias, função ou binário?

Respostas:

23

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

Joseph R.
fonte
3

A resposta dependerá de qual shell você está usando.

Para o zsh, o shell builtin whence -wdirá exatamente o que você deseja

por exemplo

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
número 5
fonte
1

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'
ericbn
fonte