-->

Configuración de variables de entorno

Configuración de variables de entorno: Crear y modificar variables de entorno del sistema y de usuario (PATH, JAVA_HOME, etc.) para permitir la ejecución global de aplicaciones desde la terminal.

Objetivo:

Crear, modificar y administrar variables de entorno a nivel de usuario y de sistema operativo (como la variable PATH o variables personalizadas como JAVA_HOME) para permitir la localización y ejecución global de herramientas y aplicaciones directamente desde cualquier consola o terminal sin necesidad de especificar la ruta absoluta.

Escenario:

  • Una máquina virtual o equipo físico con un sistema operativo Windows o GNU/Linux.
  • Aplicaciones o binarios instalados en rutas específicas que el sistema no reconoce de forma predeterminada desde la terminal.
  • Privilegios de usuario estándar (para variables de entorno de usuario) o administrador/superusuario (para modificar variables globales del sistema).

Instrucciones:

Opción A: Configuración de variables de entorno en entornos Windows

  1. Método Gráfico:
    • Presiona las teclas Windows + R, escribe sysdm.cpl y pulsa Enter para abrir las Propiedades del sistema.
    • Haz clic en la pestaña Opciones avanzadas y selecciona el botón inferior Variables de entorno...
    • En la sección superior (variables de usuario) o inferior (variables del sistema), haz clic en Nueva... para crear una variable personalizada (por ejemplo, nombre JAVA_HOME y ruta C:\Program Files\Java\jdk-17).
    • Selecciona la variable Path (tanto de usuario como de sistema), haz clic en Editar... y añade la ruta de los binarios (por ejemplo, %JAVA_HOME%\bin) para que el sistema reconozca sus comandos globalmente. Haz clic en Aceptar en todas las ventanas.
  2. Método por Línea de Comandos (PowerShell / setx):
    • Abre una terminal de PowerShell con privilegios de administrador.
    • Para crear o modificar una variable de entorno de sistema de forma persistente:
      [Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-17", [EnvironmentVariableTarget]::Machine)
    • Para añadir una ruta de forma segura al PATH del sistema actual sin sobrescribir los valores previos:
      $pathActual = [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine)
      [Environment]::SetEnvironmentVariable("Path", "$pathActual;C:\MiCarpetaBin", [EnvironmentVariableTarget]::Machine)

Opción B: Configuración de variables de entorno en entornos GNU/Linux (export / .bashrc / /etc/environment)

  1. Abre una terminal en tu distribución Linux.
  2. Definición temporal en la sesión actual: Para crear una variable o añadir una ruta al PATH de manera inmediata en la terminal abierta:
    export JAVA_HOME="/usr/lib/jvm/java-17-openjdk"
    export PATH="$JAVA_HOME/bin:$PATH"
  3. Definición persistente a nivel de usuario (~/.bashrc o ~/.zshrc):
    • Edita el archivo de configuración del intérprete de comandos de tu usuario:
      nano ~/.bashrc
    • Añade al final del archivo las líneas de exportación de tus variables:
      export JAVA_HOME="/usr/lib/jvm/java-17-openjdk"
      export PATH="$JAVA_HOME/bin:$PATH"
    • Guarda el archivo y recarga la configuración de la terminal ejecutando:
      source ~/.bashrc
  4. Definición global a nivel de sistema (/etc/environment): Para que una variable esté disponible para todos los usuarios del sistema de forma persistente, edita el archivo como superusuario:
    sudo nano /etc/environment

Verificación:

  • En Windows, abre una nueva ventana de PowerShell y comprueba que la variable responde correctamente ejecutando echo $env:JAVA_HOME y probando a ejecutar globalmente el comando asociado (por ejemplo, java -version).
  • En Linux, verifica que la variable y el PATH están correctamente configurados ejecutando echo $JAVA_HOME y echo $PATH, asegurándote de que el binario es accesible desde cualquier directorio escribiendo directamente el nombre del comando.

Preguntas de reflexión:

  1. ¿Qué función cumple exactamente la variable de entorno PATH en un sistema operativo a la hora de localizar y ejecutar aplicaciones desde la terminal?
  2. ¿Qué diferencia metodológica y de alcance existe entre definir una variable de entorno a nivel de usuario frente a definirla a nivel global del sistema?
  3. ¿Por qué es fundamental reiniciar la terminal o aplicar comandos de recarga (como source ~/.bashrc) tras modificar las variables de entorno para que los cambios surtan efecto?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué función cumple la variable PATH en el sistema operativo?

La variable PATH contiene un listado ordenado de rutas de directorios del disco duro. Cuando un usuario introduce un comando en la terminal, el sistema operativo no busca por todo el disco de forma indiscriminada; en su lugar, recorre secuencialmente cada directorio indicado en el PATH buscando un archivo ejecutable con ese nombre. Si lo encuentra, lo ejecuta de inmediato; si no, devuelve un error de comando no reconocido.


2. ¿Qué diferencia hay entre variables de usuario y variables de sistema?

Las variables de entorno de usuario afectan únicamente al perfil de sesión del usuario que ha iniciado sesión, permitiendo configuraciones personalizadas sin alterar al resto de personas que utilicen el equipo. Por el contrario, las variables de sistema (o globales) se aplican de forma transversal a todos los usuarios y servicios del sistema operativo, siendo ideales para rutas de software compartido, entornos de desarrollo base o herramientas del núcleo.


3. ¿Por qué es necesario recargar la terminal tras modificar las variables?

Cada ventana de terminal o shell carga en su memoria RAM una copia independiente de las variables de entorno en el momento exacto de su apertura. Modificar los archivos de configuración del sistema no actualiza automáticamente las sesiones de consola que ya están abiertas, por lo que se requiere abrir una nueva terminal o ejecutar comandos de recarga para forzar al intérprete a leer los nuevos valores actualizados.