Bien que d'autres aient déjà répondu à cette question, j'aimerais ajouter quelques réflexions :
1) PATH n'est consulté que si l'exécutable invoqué ne contient aucun élément de chemin. Une commande serait recherchée dans $PATH, ./somecommand
o /usr/bin/somecommand
ou ../../bin/somecommand
utilisez simplement les règles de répertoire, 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 qu'il trouve, en 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 courant est dans PATH alors il est recherché. Rappelez-vous qu'un répertoire vide dans PATH inclut le répertoire courant. Par exemple, PATH=:/usr/bin (vide au début) PATH=/usr/bin : (vide à la fin) et PATH=/usr/bin::/bin (vide au milieu) incluront tous effectivement le répertoire de travail courant.
Supposons qu'il existe un fichier portant le nom executable.sh dans un répertoire courant. Cela fonctionnerait-il s'il est exécuté $ et . ne fait pas partie du PATH ?
Il ne le trouverait jamais en cherchant dans PATH. Si le répertoire actuel n'est pas dans PATH, il ne le trouvera pas en effectuant 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. Ainsi, il jamais le trouver dans PATH, mais il peut être exécuté par d'autres moyens.