¿Por qué no se reconocen los cambios en mi RUTA?


36

Cuando actualizo mi RUTA utilizando el cuadro de diálogo Variables de entorno incorporado, o algo así como el Editor de ruta , y luego abro un símbolo del sistema, los cambios en mi RUTA no se registrarán en la consola, dependiendo de dónde estaba el símbolo del sistema empezó desde.

Por ejemplo, si edito mi RUTA y luego inicio cmd.exe desde el Menú Inicio o un acceso directo en el Escritorio, entonces mi RUTA se ve bien: se ha actualizado con éxito; sin embargo, si inicio cmd.exe desde un acceso directo en cualquier lugar que no sea ​​el Menú de inicio o el Escritorio, la nueva RUTA no se lee y en su lugar obtengo la ruta anterior. Es muy extraño.

He intentado ejecutar el símbolo del sistema desde un acceso directo en el escritorio y funciona bien; Luego copio exactamente el mismo acceso directo a una subcarpeta en el escritorio, y aparece el problema PATH no actualizado.

Me doy cuenta de que esto es bastante difícil de explicar, así que creé un screencast para mostrar este problema en acción .

Aquí hay una captura de pantalla del acceso directo del símbolo del sistema como se ve en ese screencast:

Configuración de acceso directo del símbolo del sistema

Esto está en Windows Vista Home Premium SP2.

Respuestas:


30

Cuando inicia un nuevo proceso (como una nueva línea de comando), recogerá las variables de entorno del proceso que lo está iniciando. Cuando se actualiza la ruta, solo el proceso que realiza la actualización puede saber que ha cambiado, y la configuración no se propaga hasta que vuelva a iniciar sesión (para la configuración por usuario) o reinicie (para la configuración de todo el sistema)


2
Sin embargo, el explorerproceso principal detectará los cambios en el entorno del Registro (al que pertenece el cuadro de diálogo rundll32) y actualizará su propio entorno automáticamente. (Al menos en XP lo hace). Es por eso que los cambios son visibles al comenzar cmddesde un acceso directo.
Grawity

Rowland, esto me proporcionó suficiente información para solucionar exactamente por qué sucedía esto, aunque no respondió mi pregunta por completo. Vea mi propia respuesta para más detalles. ¡Gracias!
Charles Roper

Gracias por esta respuesta! Todo lo que tenía que hacer era cerrar mi símbolo del sistema y abrirlo nuevamente.
user1477388

¡Esta fue la solución para mí! Estoy usando Git Bash para Windows dentro de un contenedor multitab (ConEmu) y me preguntaba por qué echo $PATHno estaba funcionando. Supuse que estaría fresco, pero no salió bien hasta que cerré todas las pestañas de Git Bash y ConEmu.
Oliv Utilo

27

Como sugiere Rowland, al comenzar un nuevo proceso, leerá las variables de entorno del proceso que lo está iniciando. Por lo tanto, al iniciar un símbolo del sistema desde el menú Inicio o el escritorio , lee las variables de entorno desde las explorer.execuales, como sugiere Grawity, detecta cambios en la configuración del entorno en el registro y, por lo tanto, veo mi nueva RUTA en las indicaciones de comando iniciadas desde Escritorio o menú de inicio.

La razón por la que no veo actualizaciones de mi RUTA en el screencast que publiqué es porque inicialmente había lanzado una ventana del explorador usando FARR para hacer que FindAndRunRobot.exeel proceso principal. FARR no detecta automáticamente los cambios en el entorno y, por lo tanto, los procesos secundarios generados a partir de él no recogen la nueva RUTA. También tenía la opción ' Iniciar carpetas de Windows en un proceso separado ' configurada en Explorer, lo que significa que todas las ventanas explorer.exe que abrí después de la inicial abierta por FARR donde también hijos de FARR .

Al desactivar la opción ' Iniciar ventanas de carpeta en un proceso separado ', explorer.exeno se crean nuevos procesos en FARR, lo que resuelve mi problema. Sin embargo, también lanzo ventanas de consola y otras cosas directamente desde FARR; estos también obtienen la configuración del entorno anterior. Si reinicio FARR, la nueva configuración del entorno se propaga.

Aquí hay una captura de pantalla de Process Explorer que muestra los procesos generados desde FARR. Ninguno de estos procesos recibe la nueva configuración del entorno desde el nivel superior a explorer.exemenos que reinicie FARR:

explorador de procesos


3
¿Por qué mi respuesta fue rechazada? Si hay un defecto, avíseme e intentaré solucionarlo.
Charles Roper

tiene mucho sentido
lwpro2
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.