Como verificar qual comando é usado?

9

Eu tenho um script shell chamado foo.shem /usr/local/sbin. Além disso, eu uso outro script com o mesmo nome. É armazenado em /home/user/scripts.

Ambos os caminhos pertencem PATH. Como posso descobrir qual desses scripts é executado ao digitar foo.shna linha de comando? Posso influenciar isso?

nulo
fonte

Respostas:

10

Alguns dias atrás, fiquei satisfeito com a minha resposta. Eu também sabia que o whichcomando não é usado para testar se existe um comando. Agora não estou tão satisfeito com minha resposta, e me refiro a essa ótima resposta .


Com um whichcomando simples :

which foo.sh

Ou um typecomando:

type foo.sh

E você pode influenciar isso com a ordem dos caminhos no seu $PATHou através de um caminho absoluto quando o script iniciar, EG

/home/user/scripts/foo.sh

Exemplo

Se 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 qualquer outra coisa que esteja dentro /usr/local/bine dentro /usr/bindo script /usr/local/bincomo uma prioridade mais alta.

AB
fonte
11
Falando nisso bashe zshtambém há o typeembutido; em vez de zsh which, de forma diferente a partir de bash, é um embutido (e não /usr/bin/which)
kos
@muru thanks. Eu já sabia um pouco, mas não com tantos detalhes. Eu adicionei meus pontos de vista à minha resposta. Obrigado novamente.
AB