Como verificar se alias não está substituindo um comando real? [duplicado]

5

Como posso saber se um alias que eu faço (em .bash_aliases ) não está substituindo um comando real pelo mesmo nome? Eu não quero fazer essas coisas por acidente.

(procurei em "Perguntas que talvez já tenham sua resposta" e "Perguntas similares", mas não foram encontradas correspondências)

Estou perguntando porque sinto que não há nenhum aviso dado pelo sistema (Ubuntu 13.10).

    
por DK Bose 21.02.2014 / 03:27

3 respostas

9

Você pode usar type no terminal para isso.

Digamos que você tenha um comando rm como alias rm -i . Se você verificar,

type rm

você receberá,

rm is aliased to 'rm -i'

Se você não tiver nenhum alias para rm , receberá

rm is /bin/rm
    
por souravc 21.02.2014 / 03:34
3

Warning : este método requer que você execute o comando, ao contrário das outras respostas que "reportam" no estado do shell. Você nunca pode ter certeza até a hora da execução, pode?

No seu shell, digite

set -x

Você verá + ... linhas enquanto o shell é executado. Por exemplo, quando eu executo ls , que geralmente é aliado para ls --color=auto no Ubuntu, eu recebo isto:

$ ls ~
+ ls --color=auto /home/rctay
bin         ext    foo.py      Music     shared     tmp-www                tmux-client-32280.log
...

Para desativá-lo, execute set +x .

    
por Tay Ray Chuan 29.06.2014 / 04:34
1

Antes de definir o alias de algum comando, chame-o de fn , execute type no nome do comando:

type fn

Se não houver comando desse nome, type retornará not found .

Depois de definir um alias, você pode usar locate para verificar possíveis conflitos:

locate '*bin/fn'

Isso parece em qualquer lugar no sistema para um comando chamado fn em um diretório cujo nome indica que é um executável. Observe que isso não é o mesmo que type porque locate procurará em bin diretórios que podem não estar em seu caminho padrão.

    
por John1024 21.02.2014 / 03:35