Todo lo que Twisty Impersonator dijo en su respuesta es correcto. Se ha resaltado la idea de que la variable de ruta del usuario se ha agregado, y creo que las consecuencias de esa diferencia requieren un tratamiento adicional.
Ruta =% Ruta% (Sistema); % Path% (Usuario)
Cuando se ejecuta un programa ejecutable (o cualquier secuencia de comandos ejecutables, tales como .bat
, .vbs
, etc.) que no es necesario para proporcionar la ruta completa.
Por ejemplo, para ejecutar java
, puede escribir cualquiera de estos:
C:/Program Files (x86)/Java/jre6/bin/java -version
java.exe -version
java -version
El primer ejemplo usa una ruta totalmente calificada. Esto siempre usará la versión de Java en esa ruta exacta.
El segundo ejemplo pasará por cada uno de los directorios en la %Path%
variable de entorno, buscando un archivo ejecutable llamado java.exe
. Ejecutará el primero que se encuentre y dejará de buscar. Si hay dos archivos nombrados en java.exe
algún lugar del %Path%
, solo se usa el primero encontrado.
El tercer ejemplo, como el segundo, iterará sobre los directorios listados en %Path%
. Además, debido a que no se proporcionó una extensión de archivo, se agrega una lista de extensiones de archivo ejecutables al nombre del archivo, en el orden especificado en la %PATHEXT%
variable de entorno. Si hay varios archivos con el nombre java.com
, java.exe
, java.bat
, etc. algún lugar de la %Path%
, sólo se utiliza el primero encontrado.
Puede ver la lista de extensiones de ruta ejecutables en su sistema creando el siguiente archivo por lotes:
@echo off
echo %PATHEXT%
pause
En mi máquina, estos son:
.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PY
¿Qué significa todo esto?
En marcado contraste con otras variables de entorno, la ruta del usuario no le permite anular la ruta del sistema. Todo lo contrario es el caso. De los ejemplos anteriores, hay muchos casos en los que puede cambiar la versión predeterminada de Java. Sin embargo, si ya hay una versión de Java listada en la ruta del sistema, esa es la versión que SIEMPRE se encontrará primero, porque la ruta se busca en orden, de izquierda a derecha, y la ruta del usuario se agrega a la derecha a mano, con la ruta del sistema a la izquierda.
¿Qué puedo hacer al respecto?
Si no tiene acceso a las variables de entorno del sistema, no puede anular los programas predeterminados en la ruta del sistema utilizando la ruta del usuario. (De hecho, debe ser de esta manera, o ciertos programas dejarían de funcionar correctamente y abrirían su sistema a la manipulación por software malicioso. Nadie lo quiere).
En su lugar, debe usar una ruta totalmente calificada si debe usar una versión específica.