Bien que certains autres y aient bien répondu, j'aimerais ajouter quelques réflexions:
1) PATH est uniquement consulté si l'exécutable appelé ne contient aucun élément de chemin. certaines commandes seraient recherchées dans $ PATH, ./somecommand
ou bien /usr/bin/somecommand
, ../../bin/somecommand
utilisez simplement les règles de répertoires, pas PATH
S'il y a plusieurs fichiers exécutables dans PATH avec le même nom, lequel est préféré?
Il s'arrête au premier trouvé, lisant $ PATH de gauche à droite.
Le répertoire courant est-il inclus dans la recherche lorsque le fichier est exécuté?
Si le répertoire en cours est dans PATH, la recherche est effectuée. Rappelez-vous qu'un répertoire vide dans PATH inclut le répertoire actuel. Par exemple, PATH =: / usr / bin (vide) PATH = / usr / bin: (fin vide) et PATH = / usr / bin :: / bin (milieu vide) inclura tous les répertoires de travail actuels.
Supposons qu’un fichier portant le nom executable.sh se trouve dans un répertoire en cours. Cela fonctionnerait-il s'il est exécuté $ executé et. ne fait pas partie du PATH?
Il ne le trouverait jamais en cherchant PATH. Si le répertoire en cours n'est pas dans PATH, il ne le trouvera pas par une recherche dans PATH.
Cela dit (et désolé d'ajouter de la confusion) s'il y avait un alias ou une fonction qui exécutait la commande, elle serait exécutée. Ou si votre shell avait un cache d'emplacement et que l'exécutable était dans le cache, il pourrait le trouver. Donc, il ne le trouvera jamais dans PATH, mais il peut être géré par d'autres moyens.
which <executable>
commande sera utile dans ce fil.