web-dev-qa-db-fra.com

Comment vérifier quelle commande est prise?

J'ai un script shell appelé foo.sh dans /usr/local/sbin. En outre, j'utilise un autre script du même nom. Il est stocké dans /home/user/scripts.

Les deux chemins appartiennent à PATH. Comment savoir lequel de ces scripts est exécuté lors de la saisie de foo.sh sur la ligne de commande? Puis-je influencer?

9
null

Il y a quelques jours, j'étais satisfait de ma réponse. Je savais également que la commande which n'était pas utilisée pour tester l'existence d'une commande. Maintenant, je ne suis pas tellement satisfait de ma réponse, et je me réfère à ceci bonne réponse .


Avec une simple commande which:

which foo.sh

Ou une commande type:

type foo.sh

Et vous pouvez influencer cela avec l'ordre des chemins dans votre $PATH ou via un chemin absolu lorsque le script démarre, par exemple E.G.

/home/user/scripts/foo.sh

Exemple

Si PATH est défini comme ci-dessous

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

Et vous commencez un script ou quelque chose d'autre qui se trouve dans /usr/local/bin et dans /usr/bin, le script dans /usr/local/bin avec une priorité plus élevée.

10
A.B.