Encontre onde um comando bash é definido ou originado? [duplicado]

3
    

Esta pergunta já tem uma resposta aqui:

    

Às vezes, quero saber para que um comando que eu digito em bash realmente é avaliado. Normalmente eu consigo descobrir a localização do executável com muito facilidade com which .

$ which vim
/usr/bin/vim

Mas e se eu criasse um alias para vim ?

$ alias vim="echo mwahaha"
$ which vim
/usr/bin/vim

Hmm, não é bom. Se eu suspeitar de algo e quiser verificar se vim foi com alias, sei que posso digitar

alias vim

... mas se eu tivesse um alias vim='vim -p' , eu nunca pensaria em verificar vim aliases porque ainda funcionaria bem.

Como posso saber exatamente a que um comando específico em bash está sendo avaliado?

    
por Cory Klein 11.09.2013 / 00:14

1 resposta

9

Use type , que é interno ao bash.

$ type vim
vim is /usr/bin/vim
$ type -p vim
/usr/bin/vim
$ alias vim="echo mwahaha"
$ type vim
vim is aliased to 'echo mwahaha'
$ type -p vim
$

Há um bom detalhamento das diferentes maneiras de obter informações sobre um comando em esta resposta de Stephane Chazelas. Você não deve confiar em which , mesmo que não maliciosamente, ele não sabe sobre a tabela de pesquisa de hash do seu shell, o que pode causar problemas.

    
por 11.09.2013 / 00:20