Sunday 16 December 2018

windows - Why does a file get opened when I write its name, without extensions, in the command line?


On Windows 10, I have a file called truffle.js in my current folder. I write truffle in the cmd window, expecting to invoke the truffle program which resides elsewhere on my path.


Instead, truffle.js is opened in my favorite IDE (.js files are associated with that IDE). I thought this behavior is only like this for executable files, .bat, .com and .exe. Why does it happen for a .js file?


Note: I subsequently discovered I have no truffle at all installed on my path, but my question remains: why is Windows completing the extension which I did not specify on a non-executable file?


Even after installing truffle and restarting cmd, I can't get the real truffle to run in a folder that contains a file truffle.js.



Answer



Because %PATHEXT% is set to .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC by default. Note how it contains .js.


That means if you type a name, CMD will look for files with these extensions appended, in that order, in the current folder. Only after that will it consider what’s in %PATH%. This behavior cannot be changed. You can modify %PATHEXT% though, like any other environment variable.


You can use the WHERE command to check which path would be opened (e.g. where truffle), which will automatically search both %PATH% and %PATHEXT% the same way CMD would.


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...