Saltar al contenido
GEEKnodes

Windows

Variables de entorno en Windows: qué son, el PATH y cómo editarlas

Qué son las variables de entorno de Windows, cómo funciona el PATH y cómo editarlas sin romper nada: interfaz gráfica, setx y PowerShell, usuario o sistema.

Las variables de entorno son pequeñas etiquetas con un valor que Windows y los programas consultan para saber dónde están las cosas. Esta guía es para quien instala herramientas de línea de comandos (Python, Git, Node, ffmpeg…) y se encuentra con el típico «no se reconoce como un comando interno o externo».

En resumen

  • Una variable de entorno es un nombre con un valor, por ejemplo TEMP = carpeta temporal.
  • El PATH es la lista de carpetas donde Windows busca los ejecutables que escribes en la consola.
  • Hay variables de usuario (solo tu cuenta) y del sistema (todas las cuentas, requieren administrador).
  • Para editar el PATH usa la ventana gráfica o PowerShell; evita setx PATH, que puede recortarlo.
  • Los cambios solo se ven en las ventanas y programas que abras después de guardarlos.

Qué es una variable de entorno

Piensa en ellas como atajos con nombre. En lugar de que cada programa tenga escrita la ruta de tu carpeta de usuario, pregunta por USERPROFILE y Windows le responde con C:\Users\Ana.

Algunas que ya existen en cualquier equipo:

VariableValor típicoPara qué sirve
USERPROFILEC:\Users\AnaCarpeta personal del usuario
APPDATAC:\Users\Ana\AppData\RoamingConfiguración de programas
TEMP / TMPC:\Users\Ana\AppData\Local\TempArchivos temporales
SystemRootC:\WindowsCarpeta de Windows
COMPUTERNAMEPC-SALONNombre del equipo
PATHLista de carpetasDónde buscar ejecutables

Puedes usarlas en el Explorador o en Ejecutar (Windows + R). Escribe %TEMP% y se abrirá la carpeta temporal.

El PATH, explicado con un ejemplo

Cuando escribes python en la consola, Windows no busca en todo el disco. Mira primero en la carpeta actual y después recorre, en orden, cada carpeta del PATH hasta encontrar python.exe (o .cmd, .bat…).

Consola con git: Windows recorre las carpetas del PATH en orden y encuentra git.exe en la tercera.
Windows recorre el PATH en orden y usa el primer ejecutable que encuentra.

Si el PATH contiene esto:

C:\Windows\system32
C:\Windows
C:\Program Files\Git\cmd
C:\Users\Ana\AppData\Local\Programs\Python\Python313

al escribir git encuentra C:\Program Files\Git\cmd\git.exe en la tercera posición. Si la carpeta de Python no estuviera en la lista, python daría error aunque esté instalado.

Dos consecuencias prácticas:

  • El orden importa. Si tienes dos versiones de Python en el PATH, gana la que aparece primero.
  • El PATH final es la suma de dos. Windows coloca primero el PATH del sistema y a continuación añade el del usuario.

Para ver qué ejecutable se usa realmente:

where python

En PowerShell, el equivalente es:

Get-Command python | Select-Object Source

Variables de usuario frente a variables del sistema

PATH del sistema, para todas las cuentas, y PATH de usuario, para una cuenta, se unen en un PATH final con el del sistema primero.
El PATH final es el del sistema seguido del de tu usuario.
De usuarioDel sistema
Afectan aSolo tu cuentaTodas las cuentas del equipo
PermisosLos tuyosAdministrador
Dónde se guardanHKEY_CURRENT_USER\EnvironmentHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Cuándo usarlasHerramientas que solo usas túSoftware compartido o servicios

Regla sencilla: si dudas, usa la de usuario. Es más difícil romper algo y no necesitas permisos elevados.

Método 1: editar con la ventana gráfica

Es el método más seguro, sobre todo para el PATH, porque cada carpeta aparece en una fila separada.

  1. Pulsa Inicio y escribe variables de entorno.
  2. Elige Editar las variables de entorno del sistema. Se abre Propiedades del sistema, pestaña Opciones avanzadas.
  3. Pulsa Variables de entorno…
  4. Arriba verás las variables de usuario; abajo, las del sistema.
  5. Selecciona Path en la zona que quieras y pulsa Editar…
  6. Pulsa Nuevo, pega la ruta de la carpeta (no la del .exe) y usa Subir o Bajar para colocarla.
  7. Acepta en todas las ventanas.

Si solo quieres editar las de tu usuario, también puedes abrir directamente esa ventana desde Ejecutar (Windows + R):

rundll32 sysdm.cpl,EditEnvironmentVariables

Método 2: setx desde la consola

setx guarda variables de forma permanente desde el Símbolo del sistema. Por defecto escribe en las de usuario; con /m lo hace en las del sistema (abre la consola como administrador).

setx JAVA_HOME "C:\Program Files\Java\jdk-21"
setx JAVA_HOME "C:\Program Files\Java\jdk-21" /m

Según la documentación de Microsoft, setx tiene dos comportamientos que conviene conocer:

  • El valor nuevo solo aparece en ventanas que abras después, no en la actual.
  • Hay un límite de 1024 caracteres. Si lo superas, el texto se recorta y eso es lo que se guarda.

Por qué no usar setx con el PATH

Es el error más repetido en tutoriales:

:: NO lo hagas
setx PATH "%PATH%;C:\herramientas"
%PATH% combinado de sistema y usuario se copia en el PATH de usuario, duplica entradas y se recorta a 1024 caracteres.
setx PATH mezcla, duplica y puede recortar tu PATH.

%PATH% contiene el PATH del sistema y el del usuario ya combinados. Ese comando copia todo dentro del PATH de usuario, duplica entradas y, si la cadena supera 1024 caracteres, la recorta. Además expande las referencias como %JAVA_HOME%, que dejan de actualizarse solas.

Para crear variables sencillas, setx va bien. Para el PATH, usa la ventana gráfica o PowerShell.

Método 3: PowerShell

PowerShell distingue entre la sesión actual y los valores permanentes.

Ver o cambiar una variable solo en la ventana abierta (se pierde al cerrarla):

$env:PATH
$env:MI_VARIABLE = "hola"

Guardar una variable de forma permanente para tu usuario:

[Environment]::SetEnvironmentVariable("MI_VARIABLE", "hola", "User")

Con "Machine" en lugar de "User" se guarda en las del sistema (PowerShell como administrador).

Añadir una carpeta al PATH de usuario sin destrozarlo

$ruta = "C:\herramientas"
$actual = [Environment]::GetEnvironmentVariable("Path", "User")
if (($actual -split ";") -notcontains $ruta) {
    [Environment]::SetEnvironmentVariable("Path", "$actual;$ruta", "User")
}

Este script lee solo el PATH de usuario, comprueba que la carpeta no esté ya y la añade al final. No toca el PATH del sistema.

Ejemplo práctico: ffmpeg portable

Has descomprimido ffmpeg en C:\herramientas\ffmpeg\bin y quieres usarlo desde cualquier carpeta.

  1. Abre la ventana de variables de entorno (método 1).
  2. En variables de usuario, edita Path y añade C:\herramientas\ffmpeg\bin.
  3. Cierra todas las consolas abiertas y abre una nueva.
  4. Comprueba:
where ffmpeg
ffmpeg -version

Si where devuelve la ruta correcta, ya está.

Errores habituales

  • Añadir la ruta del archivo en lugar de la carpeta. El PATH contiene carpetas: C:\herramientas\ffmpeg\bin, no ...\bin\ffmpeg.exe.
  • No reiniciar la consola. Las ventanas abiertas conservan el entorno que tenían al arrancar. Lo mismo pasa con editores como VS Code: ciérralos del todo.
  • Comillas dentro del PATH. En la ventana gráfica no hacen falta, aunque la ruta tenga espacios.
  • Dos versiones del mismo programa. Usa where para ver cuál gana y reordena las entradas.
  • Borrar el PATH del sistema por accidente. Antes de tocarlo, copia su valor a un archivo de texto. En PowerShell:
[Environment]::GetEnvironmentVariable("Path", "Machine") | Out-File "$env:USERPROFILE\Desktop\path-sistema.txt"

Preguntas frecuentes

¿Hace falta reiniciar Windows?

Normalmente no. Basta con cerrar y abrir los programas o consolas que deben ver el cambio. Algunos servicios del sistema sí necesitan reiniciarse para leer las variables del sistema nuevas.

¿Distingue mayúsculas y minúsculas?

No. Path, PATH y path son la misma variable en Windows.

¿Cómo veo todas las variables?

En el Símbolo del sistema, set sin argumentos. En PowerShell:

Get-ChildItem Env:

Relacionados

Preferencias de accesibilidad

Perfiles rápidos

Texto y lectura

Tamaño del texto
Por defecto
Altura de línea
Por defecto
Espaciado entre letras
Por defecto
Espaciado entre palabras
Por defecto

Color

Movimiento y orientación

Cursor