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.
bashezshtambém há otypeembutido; em vez dezshwhich, de forma diferente a partir debash, é um embutido (e não/usr/bin/which)