Skip to main content
updated link
Source Link

Everything that Twisty Impersonator said in their answertheir answer is correct. The idea that the user path variable is appended has been highlighted, and I believe the consequences of that difference require some additional treatment.

Path = %Path% (System) ; %Path% (User)

When you execute an executable program (or any executable script, such as .bat, .vbs, etc.) you do not need to provide the fully qualified path.

For instance, to run java, you can type in any of these:

C:/Program Files (x86)/Java/jre6/bin/java -version

java.exe -version

java -version

The first example uses a fully qualified path. This will always use the version of the Java at that exact path.

The second example will go through each of the directories in the %Path% environment variable, looking for an executable file named java.exe. It will run the very first one that is found, and stop searching. If there are two files named java.exe somewhere on the %Path%, only the first one found is used.

The third example, like the second, will iterate over the directories listed in the %Path%. In addition, because a file extension was not provided, a list of executable file extensions are appended to the name of the file, in the order specified in the %PATHEXT% environment variable. If there are several files named java.com, java.exe, java.bat, etc. somewhere on the %Path%, only the first one found is used.

You can see the list of executable path extensions on your system by creating the following batch file:

@echo off
echo %PATHEXT%
pause

On my machine, these are:

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY

What does all this mean?

In stark contrast to other environment variable, the user path does not allow you to override the system path. The exact opposite is the case. From the examples above, there are many cases where you may with to change the default version of Java. However, if there is already a Java version listed in the system path, that is the version that will ALWAYS be found first, because the path is searched in order, from left-to-right, and the user path is appended on the right-hand side, with the system path on the left.

What can I do about it?

If you do not have access to system environment variables, you cannot override default programs on the system path by using the the user path. (In fact, it must be this way, or certain programs would stop working correctly, and it would open your system to tampering by malicious software. Nobody wants that.)

Instead, you must use a fully qualified path if you must use a specific version.

Everything that Twisty Impersonator said in their answer is correct. The idea that the user path variable is appended has been highlighted, and I believe the consequences of that difference require some additional treatment.

Path = %Path% (System) ; %Path% (User)

When you execute an executable program (or any executable script, such as .bat, .vbs, etc.) you do not need to provide the fully qualified path.

For instance, to run java, you can type in any of these:

C:/Program Files (x86)/Java/jre6/bin/java -version

java.exe -version

java -version

The first example uses a fully qualified path. This will always use the version of the Java at that exact path.

The second example will go through each of the directories in the %Path% environment variable, looking for an executable file named java.exe. It will run the very first one that is found, and stop searching. If there are two files named java.exe somewhere on the %Path%, only the first one found is used.

The third example, like the second, will iterate over the directories listed in the %Path%. In addition, because a file extension was not provided, a list of executable file extensions are appended to the name of the file, in the order specified in the %PATHEXT% environment variable. If there are several files named java.com, java.exe, java.bat, etc. somewhere on the %Path%, only the first one found is used.

You can see the list of executable path extensions on your system by creating the following batch file:

@echo off
echo %PATHEXT%
pause

On my machine, these are:

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY

What does all this mean?

In stark contrast to other environment variable, the user path does not allow you to override the system path. The exact opposite is the case. From the examples above, there are many cases where you may with to change the default version of Java. However, if there is already a Java version listed in the system path, that is the version that will ALWAYS be found first, because the path is searched in order, from left-to-right, and the user path is appended on the right-hand side, with the system path on the left.

What can I do about it?

If you do not have access to system environment variables, you cannot override default programs on the system path by using the the user path. (In fact, it must be this way, or certain programs would stop working correctly, and it would open your system to tampering by malicious software. Nobody wants that.)

Instead, you must use a fully qualified path if you must use a specific version.

Everything that Twisty Impersonator said in their answer is correct. The idea that the user path variable is appended has been highlighted, and I believe the consequences of that difference require some additional treatment.

Path = %Path% (System) ; %Path% (User)

When you execute an executable program (or any executable script, such as .bat, .vbs, etc.) you do not need to provide the fully qualified path.

For instance, to run java, you can type in any of these:

C:/Program Files (x86)/Java/jre6/bin/java -version

java.exe -version

java -version

The first example uses a fully qualified path. This will always use the version of the Java at that exact path.

The second example will go through each of the directories in the %Path% environment variable, looking for an executable file named java.exe. It will run the very first one that is found, and stop searching. If there are two files named java.exe somewhere on the %Path%, only the first one found is used.

The third example, like the second, will iterate over the directories listed in the %Path%. In addition, because a file extension was not provided, a list of executable file extensions are appended to the name of the file, in the order specified in the %PATHEXT% environment variable. If there are several files named java.com, java.exe, java.bat, etc. somewhere on the %Path%, only the first one found is used.

You can see the list of executable path extensions on your system by creating the following batch file:

@echo off
echo %PATHEXT%
pause

On my machine, these are:

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY

What does all this mean?

In stark contrast to other environment variable, the user path does not allow you to override the system path. The exact opposite is the case. From the examples above, there are many cases where you may with to change the default version of Java. However, if there is already a Java version listed in the system path, that is the version that will ALWAYS be found first, because the path is searched in order, from left-to-right, and the user path is appended on the right-hand side, with the system path on the left.

What can I do about it?

If you do not have access to system environment variables, you cannot override default programs on the system path by using the the user path. (In fact, it must be this way, or certain programs would stop working correctly, and it would open your system to tampering by malicious software. Nobody wants that.)

Instead, you must use a fully qualified path if you must use a specific version.

Source Link

Everything that Twisty Impersonator said in their answer is correct. The idea that the user path variable is appended has been highlighted, and I believe the consequences of that difference require some additional treatment.

Path = %Path% (System) ; %Path% (User)

When you execute an executable program (or any executable script, such as .bat, .vbs, etc.) you do not need to provide the fully qualified path.

For instance, to run java, you can type in any of these:

C:/Program Files (x86)/Java/jre6/bin/java -version

java.exe -version

java -version

The first example uses a fully qualified path. This will always use the version of the Java at that exact path.

The second example will go through each of the directories in the %Path% environment variable, looking for an executable file named java.exe. It will run the very first one that is found, and stop searching. If there are two files named java.exe somewhere on the %Path%, only the first one found is used.

The third example, like the second, will iterate over the directories listed in the %Path%. In addition, because a file extension was not provided, a list of executable file extensions are appended to the name of the file, in the order specified in the %PATHEXT% environment variable. If there are several files named java.com, java.exe, java.bat, etc. somewhere on the %Path%, only the first one found is used.

You can see the list of executable path extensions on your system by creating the following batch file:

@echo off
echo %PATHEXT%
pause

On my machine, these are:

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY

What does all this mean?

In stark contrast to other environment variable, the user path does not allow you to override the system path. The exact opposite is the case. From the examples above, there are many cases where you may with to change the default version of Java. However, if there is already a Java version listed in the system path, that is the version that will ALWAYS be found first, because the path is searched in order, from left-to-right, and the user path is appended on the right-hand side, with the system path on the left.

What can I do about it?

If you do not have access to system environment variables, you cannot override default programs on the system path by using the the user path. (In fact, it must be this way, or certain programs would stop working correctly, and it would open your system to tampering by malicious software. Nobody wants that.)

Instead, you must use a fully qualified path if you must use a specific version.