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


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 

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'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.