web-dev-qa-db-fra.com

Pourquoi un fichier est-il ouvert quand j'écris son nom, sans extension, dans la ligne de commande?

Sous Windows 10, j'ai un fichier appelé truffle.js dans mon dossier actuel. J'écris truffle dans la fenêtre cmd, en espérant appeler le programme truffle qui réside ailleurs sur mon chemin.

truffle.js est ouvert dans mon favori IDE _ (les fichiers .js sont associés à cet IDE). Je pensais que ce problème ne se produisait que pour les fichiers exécutables, .bat, .com et .exe. Pourquoi cela se produit-il pour un fichier .js?

Remarque: j'ai découvert par la suite que je n'avais aucune truffle installée sur mon chemin, mais ma question demeure: pourquoi Windows complète-t-il l'extension que je n'ai pas spécifiée sur un fichier non-exécutable?

Même après l'installation de truffle et le redémarrage de cmd, je ne parviens pas à exécuter la vraie truffe dans un dossier contenant un fichier truffle.js.

42
ripper234

Parce que %PATHEXT% est défini sur .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC par défaut. Notez comment il contient .js.

Cela signifie que si vous tapez un nom, CMD recherchera les fichiers avec ces extensions ajoutées, dans cet ordre, dans le dossier actuel. Ce n’est qu’après cela qu’il considérera ce qui est dans %PATH%. Ce comportement ne peut pas être changé. Vous pouvez cependant modifier %PATHEXT%, comme toute autre variable d’environnement.

Vous pouvez utiliser la commande WHERE pour vérifier le chemin qui serait ouvert (par exemple, where truffle), qui effectuera automatiquement une recherche à la fois% PATH% et% PATHEXT% de la même manière que CMD.

75
Daniel B