Administración de Windows · Guía Completa

Variables de Entorno en
Windows 10 & 11

Todo lo que necesitas saber para ver, crear, editar y gestionar variables de entorno del sistema y del usuario — desde la interfaz gráfica hasta PowerShell.

⊞ Windows 10 ⊞ Windows 11 ⌨ CMD & PowerShell 🔧 Ámbito Sistema & Usuario 📖 De principiante a experto

¿Qué son las Variables de Entorno en Windows?

Las variables de entorno son pares clave-valor con nombre que almacena el sistema operativo con información de configuración utilizada por programas, scripts y el propio intérprete de comandos. Puedes imaginarlas como un registro de ajustes global que cualquier proceso en ejecución puede consultar, sin necesidad de codificar rutas o valores directamente en el código.

Por ejemplo, la conocida variable PATH le indica a Windows dónde buscar cuando escribes un comando en el Símbolo del sistema. En lugar de escribir C:\Windows\System32\notepad.exe cada vez, simplemente escribes notepad, porque C:\Windows\System32 ya está incluido en PATH.

💡
Concepto clave Los procesos hijo heredan las variables de entorno. Al abrir un programa, recibe automáticamente una copia de todas las variables de entorno de su proceso padre, que habitualmente es el Explorador de Windows o el intérprete de comandos que lo inició.

Las variables de entorno han sido parte esencial de Windows desde NT 3.1 y su comportamiento es prácticamente idéntico en Windows 10 y Windows 11. Los cuadros de diálogo de la interfaz gráfica lucen algo diferentes debido al rediseño visual de Windows 11, pero las ubicaciones en el registro, las reglas de herencia y las herramientas de línea de comandos funcionan exactamente igual.

Por qué son importantes las variables de entorno

Desarrolladores, administradores de sistemas y usuarios avanzados recurren a las variables de entorno para una amplia variedad de tareas: almacenar datos sensibles como claves de API fuera del código fuente, configurar el comportamiento en tiempo de ejecución de las aplicaciones sin recompilar, crear scripts portables que funcionen en cualquier máquina y definir rutas de instalación para herramientas como Python, Java, Node.js y Git.

Tipos y Ámbito de las Variables de Entorno en Windows

Windows reconoce cuatro ámbitos distintos para las variables de entorno. Comprender el ámbito es fundamental, porque una variable definida en un nivel puede sobrescribir a otra, ser sobrescrita por ella o simplemente ser invisible desde otro nivel.

👤

Variables de usuario

Se definen por cuenta de usuario. Se almacenan en HKCU\Environment en el registro. Solo están disponibles para los procesos que se ejecutan bajo ese usuario. Tienen prioridad sobre las variables de equipo con el mismo nombre (excepto PATH).

🖥️

Variables del sistema (equipo)

Se aplican a todos los usuarios del equipo. Se almacenan en HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Se requieren privilegios de Administrador para modificarlas.

⚙️

Variables de proceso

Existen únicamente durante la ejecución de un proceso y sus procesos hijo. Se establecen con set en CMD o con $env: en PowerShell. Los cambios se descartan al finalizar el proceso.

Variables volátiles

Subconjunto especial almacenado en HKCU\Volatile Environment. Se crean de nuevo en cada inicio de sesión (p. ej., SESSIONNAME, LOGONSERVER). Se pierden al cerrar sesión y no son editables por el usuario.

Prioridad y concatenación de PATH

En la mayoría de las variables, las variables de usuario tienen prioridad sobre las variables del sistema cuando ambas existen con el mismo nombre. La excepción más importante es PATH: Windows concatena el PATH del sistema y el PATH del usuario (primero el del sistema, luego el del usuario), de modo que ambos contribuyen al valor final que ve cualquier proceso en ejecución.

⚠️
Importante Los cambios en las variables de entorno del sistema o del usuario requieren reiniciar las aplicaciones abiertas para que surtan efecto. Una nueva ventana de CMD, PowerShell o el Explorador sí recogerá los nuevos valores, pero los procesos que ya están en ejecución no lo harán.

Cómo Ver y Abrir las Variables de Entorno en Windows 10 y Windows 11 (Interfaz Gráfica)

Existen varias formas de abrir el cuadro de diálogo de Variables de entorno. A continuación se muestran los métodos más fiables, todos compatibles con Windows 10 y Windows 11:

Método A — Mediante Propiedades del sistema

  1. Pulsa Win + R, escribe sysdm.cpl y pulsa Entrar.
  2. En la ventana Propiedades del sistema, haz clic en la pestaña Opciones avanzadas.
  3. Haz clic en el botón Variables de entorno… situado en la parte inferior.
  4. El cuadro de diálogo muestra dos secciones: Variables de usuario (arriba) y Variables del sistema (abajo).

Método B — Mediante la búsqueda de Configuración (Windows 11)

  1. Pulsa Win + S para abrir la búsqueda.
  2. Escribe variables de entorno.
  3. Haz clic en "Editar las variables de entorno del sistema" o en "Editar las variables de entorno de esta cuenta" según tus necesidades.

Método C — Comando directo de Ejecutar

  1. Pulsa Win + R para abrir el cuadro de diálogo Ejecutar.
  2. Escribe rundll32 sysdm.cpl,EditEnvironmentVariables y pulsa Entrar.
  3. Se abre directamente el cuadro de diálogo de Variables de entorno, sin pasos intermedios.
Consejo profesional Guarda el comando rundll32 sysdm.cpl,EditEnvironmentVariables como acceso directo en el escritorio si editas variables de entorno con frecuencia. Es la ruta más rápida al cuadro de diálogo con un solo clic en cualquier sistema Windows 10/11.

Cómo Listar Variables de Entorno con CMD y PowerShell en Windows

La línea de comandos te ofrece acceso rápido y automatizable a los valores de las variables de entorno sin necesidad de abrir ningún cuadro de diálogo gráfico.

Símbolo del sistema (cmd.exe)

CMD — listar todas las variablesset
CMD — mostrar una variable concretaecho %VARIABLE_NAME%
echo %PATH%
echo %USERNAME%
CMD — filtrar variables por prefijoset APP_

Escribir set sin argumentos muestra todas las variables de entorno disponibles en el proceso actual. Escribir set PREFIJO (sin signo igual) lista todas las variables cuyo nombre comienza por ese prefijo — muy útil para comprobar rápidamente todas las variables relacionadas con JAVA_ o PYTHON.

PowerShell

PowerShell — listar todas las variablesGet-ChildItem Env:
PowerShell — leer una variable concreta$env:PATH
$env:USERNAME
$env:APPDATA
PowerShell — filtrar y formatearGet-ChildItem Env: | Where-Object { $_.Name -like "APP_*" }
Get-ChildItem Env: | Sort-Object Name | Format-Table -AutoSize
ℹ️
Nota Tanto CMD como PowerShell solo muestran la copia de las variables de entorno a nivel de proceso, es decir, los valores heredados cuando se inició la terminal. No consultan directamente el registro. Para leer los valores del registro (variables de usuario o del sistema persistentes), utiliza el proveedor de registro de PowerShell o la interfaz gráfica.
PowerShell — leer variable de usuario persistente desde el registro[System.Environment]::GetEnvironmentVariable("VARIABLE_NAME", "User")
[System.Environment]::GetEnvironmentVariable("VARIABLE_NAME", "Machine")

Cómo Crear, Editar y Eliminar Variables de Entorno en Windows

✦ Ventajas de la interfaz gráfica

  • Lista visual de todas las variables
  • Editor de PATH integrado con entradas individuales
  • Sin riesgo de errores tipográficos en los nombres
  • Retroalimentación inmediata sobre los cambios

✦ Limitaciones de la interfaz gráfica

  • No se puede automatizar ni incluir en scripts
  • Hay que volver a abrir el cuadro para actualizar la vista
  • Tedioso para cambios masivos
  • Requiere navegar por varios cuadros de diálogo

Crear una nueva variable (interfaz gráfica)

  1. Abre el cuadro de diálogo Variables de entorno (consulta la Sección 03).
  2. En Variables de usuario o Variables del sistema, haz clic en Nueva…
  3. Introduce el Nombre de la variable (p. ej., MY_APP_ROOT) y el Valor de la variable (p. ej., C:\MyApp).
  4. Haz clic en Aceptar en todos los cuadros abiertos para guardar.

Editar una variable existente (interfaz gráfica)

  1. Selecciona la variable que deseas modificar en la lista.
  2. Haz clic en Editar…
  3. Modifica el valor según sea necesario y haz clic en Aceptar.

Crear o actualizar una variable mediante CMD (solo sesión actual)

CMD — establecer una variable para la sesión actualset MY_VARIABLE=HolaMundo
set APP_ENV=production
CMD — eliminar una variable de la sesión actualset MY_VARIABLE=

Hacer persistente una variable mediante CMD (setx)

CMD — crear una variable de usuario persistentesetx MY_VARIABLE "HolaMundo"
CMD — crear una variable del sistema persistente (requiere Admin)setx MY_VARIABLE "HolaMundo" /M
⚠️
Importante — Comportamiento de setx setx escribe en el registro y afecta a los procesos futuros, pero no actualiza el entorno de la sesión de CMD actual. Debes abrir una nueva ventana de CMD para ver el nuevo valor. Además, setx trunca silenciosamente los valores de más de 1.024 caracteres — un problema frecuente al añadir entradas a PATH.

Cómo Gestionar la Variable PATH en Windows 10 y Windows 11

La variable PATH es, con diferencia, la variable de entorno más importante y la que se modifica con más frecuencia. Es una lista de directorios separados por punto y coma que Windows recorre en orden cuando ejecutas un programa sin especificar su ruta completa.

Windows 10 y 11 incluyen un editor de PATH específico que muestra cada entrada en su propia línea, lo que facilita enormemente la gestión frente a editar manualmente la cadena de texto con punto y coma.

Abrir el editor de PATH (Windows 10 / 11)

  1. Abre Variables de entorno (consulta la Sección 03).
  2. Selecciona Path en la sección de usuario o del sistema.
  3. Haz clic en Editar… — Windows abre un editor multilínea específico en lugar de un único campo de texto.
  4. Utiliza los botones Nuevo, Editar, Eliminar, Subir y Bajar para gestionar las entradas.
  5. Haz clic en Aceptar para guardar todos los cuadros de diálogo.
Buena práctica Añade las rutas de herramientas personalizadas (Python, Node.js, Git, etc.) al PATH de usuario en lugar de al PATH del sistema, a menos que todos los usuarios del equipo necesiten la herramienta. Esto evita necesitar privilegios de Administrador y previene conflictos entre versiones de herramientas de distintos usuarios.

Añadir un directorio a PATH mediante PowerShell (persistente)

PowerShell — añadir al PATH de usuario de forma permanente$current = [System.Environment]::GetEnvironmentVariable("Path", "User")
$newEntry = "C:\MyTool\bin"
[System.Environment]::SetEnvironmentVariable("Path", "$current;$newEntry", "User")
PowerShell — añadir al PATH del sistema (ejecutar como Administrador)$current = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
$newEntry = "C:\MyTool\bin"
[System.Environment]::SetEnvironmentVariable("Path", "$current;$newEntry", "Machine")
🚨
Advertencia — Nunca sobreescribas PATH Siempre lee primero el valor actual de PATH y añade tu nueva entrada, tal como se muestra arriba. Sobreescribir PATH por completo con solo la nueva entrada romperá prácticamente todas las herramientas de línea de comandos y muchas funciones del sistema. Si esto ocurre, puedes restaurarlo desde la copia de seguridad del registro o mediante Restaurar sistema.

Gestión Avanzada de Variables de Entorno con PowerShell

La clase .NET [System.Environment] de PowerShell y el proveedor Env: te ofrecen control total y automatizable sobre todos los ámbitos de las variables de entorno.

Establecer variables persistentes

PowerShell — establecer una variable de usuario persistente[System.Environment]::SetEnvironmentVariable("API_KEY", "abc123xyz", "User")
PowerShell — establecer una variable del sistema persistente (requiere Admin)[System.Environment]::SetEnvironmentVariable("DB_HOST", "prod-db-01", "Machine")

Eliminar variables

PowerShell — eliminar una variable de usuario[System.Environment]::SetEnvironmentVariable("API_KEY", $null, "User")

Establecer una variable temporal a nivel de proceso

PowerShell — establecer una variable solo para la sesión actual$env:MY_TEMP_VAR = "valor_temporal"
Remove-Item Env:MY_TEMP_VAR

Exportar e importar en bloque

PowerShell — exportar todas las variables de usuario a un archivoGet-ChildItem Env: | Export-Csv -Path "$HOME\env_backup.csv" -NoTypeInformation
PowerShell — importar variables desde un archivo .env (patrón habitual)Get-Content ".env" | ForEach-Object {
    if ($_ -match "^([^#=]+)=(.*)$") {
        [System.Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), "User")
    }
}
💡
Consejo — Propagar cambios sin reiniciar Después de modificar variables de entorno del sistema mediante PowerShell, puedes difundir un mensaje WM_SETTINGCHANGE para que el Explorador y las nuevas ventanas de terminal recojan los cambios sin necesidad de cerrar sesión. Esta técnica la utilizan muchos instaladores, como Chocolatey y Scoop.

Variables de Entorno Integradas más Importantes en Windows

Windows incluye un amplio conjunto de variables de entorno predefinidas. Conocerlas ahorra tiempo y hace que los scripts sean portables entre distintas máquinas y usuarios.

Variable Valor típico Descripción
%USERNAME% juan.garcia Nombre de la cuenta del usuario que ha iniciado sesión actualmente.
%USERPROFILE% C:\Users\juan.garcia Ruta completa a la carpeta de inicio del usuario actual.
%APPDATA% C:\Users\juan.garcia\AppData\Roaming Carpeta de datos de aplicación itinerante del usuario actual.
%LOCALAPPDATA% C:\Users\juan.garcia\AppData\Local Carpeta de datos de aplicación local (no itinerante).
%TEMP% / %TMP% C:\Users\juan.garcia\AppData\Local\Temp Directorio de archivos temporales. Se puede limpiar periódicamente sin problemas.
%SYSTEMROOT% C:\Windows Directorio raíz de la instalación de Windows.
%SYSTEMDRIVE% C: Letra de unidad de la unidad del sistema.
%WINDIR% C:\Windows Alias de %SYSTEMROOT%. Utilizado por aplicaciones antiguas.
%PROGRAMFILES% C:\Program Files Carpeta de instalación predeterminada para programas de 64 bits.
%PROGRAMFILES(X86)% C:\Program Files (x86) Carpeta de instalación predeterminada para programas de 32 bits en Windows de 64 bits.
%COMPUTERNAME% DESKTOP-ABC123 Nombre NetBIOS del equipo.
%OS% Windows_NT Siempre Windows_NT en Windows moderno. Se usa en scripts por lotes heredados para detectar el sistema operativo.
%PROCESSOR_ARCHITECTURE% AMD64 Arquitectura de CPU del proceso actual (AMD64, x86, ARM64).
%PATH% (lista combinada) Lista de directorios separados por punto y coma que se recorren para buscar ejecutables.
%PATHEXT% .COM;.EXE;.BAT;… Extensiones de archivo que Windows considera ejecutables al buscar en PATH.
%PUBLIC% C:\Users\Public Carpeta pública compartida accesible por todos los usuarios del equipo.

Puedes usar cualquiera de estas variables en la barra de direcciones del Explorador de archivos, en el cuadro de diálogo Ejecutar (Win+R), en scripts por lotes y en PowerShell, encerrándolas entre signos de porcentaje (%VARIABLE%) o con la sintaxis $env:VARIABLE.

Solución de Problemas con Variables de Entorno en Windows 10 y Windows 11

Comparativa de métodos

Interfaz gráfica (sysdm.cpl)
Visual, persistente, más seguro para editar PATH Principiante
setx (CMD)
Persistente, pero límite de 1024 caracteres, no actualiza la sesión actual Avanzado
PowerShell API .NET
Totalmente automatizable, todos los ámbitos, sin límite de caracteres Experto

Problemas comunes y soluciones

Los cambios no tienen efecto en las aplicaciones abiertas. Los cambios en las variables de entorno solo se leen cuando se inicia un proceso. Debes cerrar y volver a abrir la aplicación, la terminal o el IDE. Cerrar y volver a iniciar sesión garantiza que todos los procesos reciban los valores actualizados.

Comando no encontrado después de añadirlo a PATH. Primero verifica que la ruta se añadió correctamente con echo %PATH% en una nueva ventana de CMD. Comprueba si hay errores tipográficos, barras invertidas que faltan o espacios de más. Asegúrate de haber editado el ámbito correcto (usuario frente a sistema).

PATH aparece truncado — faltan entradas. Esto se debe al límite de 1.024 caracteres del comando setx antiguo o de herramientas de registro heredadas. Usa el editor gráfico de PATH o el método [System.Environment] de PowerShell, que admite rutas de hasta 32.767 caracteres (el límite del registro de Windows).

Las variables del sistema no son visibles para el usuario actual. Asegúrate de revisar tanto la sección de usuario como la del sistema en el cuadro de diálogo de Variables de entorno, o usa set en CMD, que muestra el resultado combinado. Si una variable del sistema sigue sin aparecer, revisa la directiva de grupo — puede sobrescribir u ocultar variables.

Una aplicación ignora la variable de entorno. Algunas aplicaciones almacenan en caché las variables de entorno al iniciar y no las vuelven a leer mientras están en ejecución. Reinicia la aplicación. Algunas además requieren que la variable esté definida antes de que se inicie el servicio que las lanza; en ese caso, puede ser necesario reiniciar el sistema.

🛡️
Antes de editar — Crea una copia de seguridad Exporta tus variables de entorno actuales antes de realizar cambios importantes: ejecuta set > "%USERPROFILE%\Desktop\env_backup.txt" en CMD. Esto te proporciona una referencia para restaurar si algo falla.

Preguntas Frecuentes sobre las Variables de Entorno en Windows

P ¿Cuál es la diferencia entre las variables de usuario y las variables del sistema en Windows?
Las variables de usuario se almacenan por cuenta de usuario y solo afectan a los procesos que se ejecutan bajo esa cuenta. Las variables del sistema (equipo) se aplican a todos los usuarios del equipo y requieren privilegios de Administrador para modificarlas. Cuando ambos ámbitos definen una variable con el mismo nombre, la variable de usuario tiene prioridad, excepto con PATH, cuyo valor se concatena a partir de ambos. Si eres el único usuario y tienes derechos de administrador, la diferencia práctica es mínima; en equipos compartidos o entornos controlados, las variables del sistema son la opción correcta para ajustes que afecten a toda la máquina.
P ¿Cómo añado Python o Node.js al PATH de Windows?
Durante la instalación, tanto Python como Node.js ofrecen una casilla para «Añadir al PATH automáticamente» — siempre es preferible activarla. Si la perdiste, abre Variables de entorno, selecciona Path en las variables de usuario, haz clic en Editar, luego en Nuevo y pega el directorio (p. ej., C:\Python312 y C:\Python312\Scripts para Python, o C:\Program Files\nodejs para Node.js). Abre una nueva ventana de CMD y escribe python --version o node --version para confirmar.
P ¿Pueden las variables de entorno contener caracteres especiales, espacios o comillas?
Sí, con matices. Los valores pueden contener espacios, y las rutas con espacios son habituales (p. ej., C:\Program Files\...). Al referenciar esa variable en CMD, encierra la expansión entre comillas: "%MI_RUTA%". Los nombres de variables deben ser alfanuméricos con guiones bajos; evita espacios y caracteres especiales en los nombres. No incluyas comillas literales dentro del valor de una variable mediante la interfaz gráfica, ya que se almacenarán tal cual y pueden provocar comportamientos inesperados cuando los scripts expandan la variable.
P ¿Los nombres de las variables de entorno en Windows distinguen entre mayúsculas y minúsculas?
No. Los nombres de variables de entorno en Windows no distinguen entre mayúsculas y minúsculas. %PATH%, %path% y %Path% hacen referencia a la misma variable. Esto es diferente de Linux/macOS, donde PATH y path serían dos variables distintas. Por convención, los nombres de variables de entorno en Windows se escriben en MAYÚSCULAS, pero es puramente una cuestión de estilo.
P ¿Cómo almaceno una clave de API o un secreto de forma segura en una variable de entorno en Windows?
Guarda el secreto como variable de usuario (no del sistema) para que tenga el ámbito limitado a tu cuenta. Usa un nombre claro con espacio de nombres, como MIAPP_API_KEY. Ten en cuenta que las variables de entorno se almacenan en texto plano en el registro de Windows — no están cifradas. Cualquier proceso que se ejecute bajo tu cuenta de usuario puede leerlas. Para mayor seguridad, considera el Administrador de credenciales de Windows, Azure Key Vault o herramientas como direnv combinadas con archivos .env excluidos del control de versiones. Nunca confirmes en repositorios de código fuente variables de entorno que contengan secretos.
P ¿Cuál es la longitud máxima del valor de una variable de entorno en Windows?
El propio registro admite valores de hasta 32.767 caracteres para REG_EXPAND_SZ (el tipo utilizado para variables de entorno expandibles como PATH). Sin embargo, el comando heredado setx trunca silenciosamente los valores de más de 1.024 caracteres — una limitación conocida. Para gestionar valores largos de forma segura (especialmente PATH), usa siempre el editor gráfico o [System.Environment]::SetEnvironmentVariable() en PowerShell, que se comunican directamente con el registro sin esta restricción.
P ¿Necesito reiniciar Windows después de cambiar las variables de entorno?
Normalmente no. Las nuevas ventanas de terminal, los Símbolos del sistema y las aplicaciones que inicies después de guardar el cambio heredarán los valores actualizados. Sin embargo, las aplicaciones que ya están en ejecución — incluidas las sesiones de terminal abiertas — no verán el cambio hasta que se reinicien. Algunos servicios en segundo plano y el administrador de servicios de Windows leen las variables de entorno solo al iniciar; para esos casos, se requiere un reinicio del sistema o del servicio. Los IDEs como Visual Studio, VS Code e IntelliJ también deben reiniciarse tras cambios en PATH.

🏁 Conclusiones principales

Las variables de entorno son una parte fundamental de la configuración de Windows: dominarlas te hace significativamente más productivo como desarrollador, administrador de sistemas o usuario avanzado. Usa el editor gráfico para una gestión visual y segura del PATH; usa la API [System.Environment] de PowerShell para automatización con control de ámbito y sin límite de caracteres; y usa set/$env: para valores temporales de sesión que no contaminen el registro del sistema.

Tanto en Windows 10 como en Windows 11, los mecanismos subyacentes son idénticos — solo difiere la apariencia visual. Una vez que comprendas el ámbito de usuario frente al del sistema, el comportamiento de concatenación de PATH y cómo funciona la herencia de procesos, rara vez te encontrarás con problemas que no puedas diagnosticar y resolver en cuestión de minutos.