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.