42 votes

Pourquoi un fichier s'ouvre-t-il lorsque j'écris son nom, sans extensions, 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 invoquer le programme truffle qui se trouve ailleurs dans mon chemin.

A la place, truffle.js s'ouvre dans mon IDE préféré (les fichiers .js sont associés à cet IDE). Je pensais que ce comportement était réservé aux fichiers exécutables, .bat, .com et .exe. Pourquoi cela arrive-t-il pour un fichier .js ?

Note : J'ai ensuite découvert que je n'avais pas du tout truffle installé dans mon chemin, mais ma question reste la même : 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 avoir installé truffle et redémarré cmd, je ne parviens pas à exécuter le vrai truffle dans un dossier contenant un fichier truffle.js.

76voto

Daniel B Points 52129

Parce que %PATHEXT% est réglé par défaut sur .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC. Notez la présence de .js.

Cela signifie que si vous tapez un nom, CMD recherchera des fichiers avec ces extensions ajoutées, dans cet ordre, dans le dossier courant. Ce n'est qu'après cela qu'il examinera ce qui se trouve dans %PATH%. Ce comportement ne peut pas être modifié. Vous pouvez cependant modifier %PATHEXT%, comme n'importe quelle autre variable d'environnement.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X