Actualizar variable de entorno

12

¿Cómo puedo actualizar un shell de cmd de Windows después de modificar mis variables de entorno?

es decir, en bash solo puedo hacer "source ~ / .bashrc"

Don Ch
fuente
Hay una buena respuesta a la misma pregunta en Stackoverflow.
Hugh Allen el
Cierre la consola y abra una nueva.
Synetech

Respuestas:

4

Realmente depende de cómo se establecieron las variables de entorno. Si, por ejemplo, usó el comando "SET" en la línea de comando, solo afecta a la instancia actual. Por otro lado, comandos como "SETX" ajustarán permanentemente el valor de la variable de entorno. SETX se asegurará de que todas las instancias futuras de cmd vean la actualización. No afectará el medio ambiente local.

Si otra aplicación establece la variable de entorno y no se actualiza, a menudo es más fácil reiniciar el proceso "explorer.exe", cerrar sesión y volver a iniciarla o reiniciarla. Esencialmente, solo necesita decirle al explorador que vuelva a cargar las variables de entorno. Si es una aplicación que ha desarrollado, como un instalador, asegúrese de que esté llamando SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");. Esto le dice al explorador que actualice su caché de las variables de entorno.

Esto es importante porque las aplicaciones iniciadas por otro proceso heredan sus variables de entorno de su padre. Como tal, si inicia cmd desde el explorador, obtiene las variables tal como las ve el explorador.

Chris Crutchfield
fuente
1

Establecer y recuperar el entorno maestro en Windows es algo en lo que la gente de BartPE pasó mucho tiempo.

El entorno principal se almacena en el registro, pero el shell del explorador lo lee en su dirección. Desde aquí se envía a cada sesión cmd.exe.

SET afecta solo al entorno cmd. SETX le permite cambiar el entorno maestro, pero la configuración no se refleja en el entorno local.

CONSET y 4NT de Frank Westlake pueden obtener entradas del registro, pero no hay conmutadores para el entorno maestro en particular.

Las ventanas normalmente cargadas realizan un seguimiento de la configuración del registro, mientras que la que se carga a través de minint (es decir, WinPE) no lo hace. Por lo tanto, configurar el registro y leer el registro funciona en ambos, pero solo las ventanas arrancadas normalmente verán la configuración y las pasarán a un nuevo cmd, un programa exe.

wendy.krieger
fuente
0

eso depende de dónde "establezca" sus variables de entorno. el equivalente a su ejemplo bash sería así:

archivo: env.bat

set FOO=bar

y ahora lo actualizas

% call env.bat

pero creo que lo has hecho a través del diálogo de configuración del sistema de Windows (o como se llame). El resultado de esto es que realmente ha cambiado el registro. estas configuraciones de registro se asignan al proceso cuando inicia un nuevo proceso.

entonces, puede iniciar un nuevo proceso (cmd.exe en su caso) O puede leer las claves del registro que reflejan los cambios que desea. también puede escribir un pequeño script .bat / .cmd que obtiene el entorno del registro y cambia el entorno actual (si me da la gana, lo haré después del almuerzo).

akira
fuente
0

Esto es ahora mucho más fácil, no es necesario reiniciar el shell:

  1. Abra el menú de inicio y busque RefreshEnv.bat
  2. correr RefreshEnv.bat

Observe que las variables de entorno agregadas recientemente están disponibles en cualquier nueva instancia de Command / Powershell, verificando la actualización.

Lance McCarthy
fuente
¿A qué te refieres ahora? ¿Desde qué versión? ¿Ese archivo bat está disponible con Windows?
Máté Juhász