Comment Windows décide-t-il quel exécutable à exécuter?

J'ai plusieurs endroits sur mon ordinateur qui ont des exécutables, et ils sont tous ajoutés au PATH .

Parfois, il existe des cas où j'ai plusieurs exécutables avec le même nom qui ont des configurations différentes ou font des choses différentes entièrement. Par exemple, j'ai la commande native FIND Windows, et j'ai aussi le port Linux de find pour Windows. Les deux sont très utiles dans leur droit, mais font des choses très différentes.

Lorsque j'exécute FIND partir de la ligne de commande; Par défaut, la version Windows s'exécute sauf si je suis dans le répertoire avec la version Unix. Dans ce cas, c'est surtout ce que je veux, mais il existe des situations différentes. Je sais que l'exécutable qui fonctionnera sera toujours celui généré lorsque j'écrirai which <executable name> .

Ma question est la suivante: comment cet exécutable est-il choisi sur l'autre? Pourquoi Windows choisit Git situé à ...\msysgit\bin\git.exe rapport à celui situé à D:\bin\git.exe ? Les deux emplacements sont sur le PATH . Est-ce quelque chose d'aussi idiot que l'ordre des entrées PATH ?

Windows vérifie d'abord le répertoire de travail actuel, puis vérifie chaque chemin de la variable PATH de gauche à droite et vérifie enfin les emplacements du système (par exemple,% WINDIR%). C'est presque identique à Linux, sauf Linux ne vérifie pas "." Avant PATH.