Como verificar qual comando é obtido?

9

Eu tenho um script de shell chamado foo.sh in /usr/local/sbin . Além disso eu uso outro script com o mesmo nome. Está armazenado em /home/user/scripts .

Ambos os caminhos pertencem a PATH . Como posso descobrir, qual desses scripts são executados ao digitar foo.sh na linha de comando? Posso influenciá-lo?

    
por null 11.09.2015 / 15:04

1 resposta

10

Há alguns dias, fiquei satisfeito com a minha resposta. Eu também sabia que o comando which não é usado para testar se existe um comando. Agora não estou tão satisfeito com a minha resposta e refiro-me a esta grande resposta .

Com um simples comando which :

which foo.sh

Ou um comando type :

type foo.sh

E você pode influenciar isso com a ordem dos caminhos em seu $PATH ou por meio de um caminho absoluto quando o script for iniciado, E.G.

/home/user/scripts/foo.sh

Exemplo

Se o PATH estiver definido como abaixo

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

E você inicia um script ou outra coisa que esteja em /usr/local/bin e em /usr/bin , o script em /usr/local/bin como uma prioridade mais alta.

    
por A.B. 11.09.2015 / 15:07