Comment vérifier quelle commande est prise?

9

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

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

nul
la source

Réponses:

10

Il y a quelques jours, j'étais satisfait de ma réponse. Je savais également que la whichcommande n'est pas utilisée pour tester si une commande existe. Maintenant, je ne suis pas si satisfait de ma réponse, et je me réfère à cette excellente réponse .


Avec une simple whichcommande:

which foo.sh

Ou une typecommande:

type foo.sh

Et vous pouvez influencer cela avec l'ordre des chemins dans votre $PATHou via un chemin absolu lorsque le script démarre, EG

/home/user/scripts/foo.sh

Exemple

Si le CHEMIN 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 démarrez un script ou quelque chose d'autre qui est dedans /usr/local/binet dedans /usr/bin, le script dedans /usr/local/bincomme une priorité plus élevée.

UN B
la source
1
En parlant de cela bashet zshil y a aussi le typeintégré; au lieu de cela zsh which, différemment de bash, est intégré (et non /usr/bin/which)
kos
@muru merci. Un peu je le savais déjà, mais pas avec autant de détails. J'ai ajouté mon point de vue à ma réponse. Merci encore.
AB