Introducción
Las variables de entorno son una característica fundamental de cualquier sistema operativo moderno. Permiten que los procesos se ejecuten correctamente en cualquier sistema compatible sin obligar al usuario a realizar tediosas configuraciones para su equipo concreto.
En esta entrada correremos el velo que oculta las variables de entorno y entenderemos su importancia, viendo algunos ejemplos tanto en sistemas Linux como en sistemas Windows.
¿Qué es una Variable de Entorno?
Una variable de entorno se define como una variable dinámica del sistema que almacena información que los procesos pueden necesitar para su correcto funcionamiento. Veámoslo con un ejemplo:
Imagina que estas construyendo una casa y has contratado a diferentes empresas de todo el mundo para diferentes trabajos. Como no sabes qué información sobre la obra le has dado a cada empresa, decides poner en la puerta una serie de etiquetas con información que las empresas podrían necesitar.
Por ejemplo: una con la zona donde irá el baño, otra con la zona donde estará la cocina, otra con el idioma en el que hablas, otra con la dirección de la casa para hacer la factura, otra con la zona horaria y todas las que te puedas imaginar.
Pues bien, cada una de estas etiquetas equivaldría a una Variable de Entorno en tu sistema operativo. No sabes si las empresas las usarán pero están ahí para ellas.
En el caso real, las Variables de Entorno almacenan información importante para los procesos que se están ejecutando en cada momento. Estos procesos pueden necesitarlas o no, pero siempre pueden acceder a ellas. Les dan información del idioma y de la hora, de la carpeta en la que pueden guardar archivos temporales o de la carpeta donde se almacenan las Bibliotecas compartidas…
El hecho de que sean dinámicas hace referencia a que, en muchos casos, la información que contienen las Variables de Entorno cambia de una máquina a otra, ya que, por ejemplo, el usuario de mi ordenador no se llama igual que el tuyo y, por tanto, mi carpeta personal será diferente a la tuya. Sin embargo, el nombre de las Variables se mantiene invariable.
Esto permite que una aplicación pueda, con la misma linea de código, configurarse en cualquier máquina compatible, haciendo referencia a Variables de Entorno en vez de a rutas absolutas.
Variables de Entorno en Windows
En Windows, las Variables de Entorno se reconocen por que se escriben entre %
. Ejemplos de Variables de entorno muy importantes en Windows son:
%USERPROFILE%
: Hace referencia a la carpeta del usuario, en el caso de Windows 10 seríaC:\Users\Usuario1
\ mientras que en el caso de Windows XP seríaC:\Document and Settings\
.%APPDATA%
: Hace referencia a la carpeta oculta para datos de programa, dentro de la carpeta de usuario. En Windows 10 y Windows 11, la ruta por defecto esC:\Users\NombreDeUsuario\AppData\Roaming
.%PROGRAMFILES%
: Es la carpeta donde se instalan los programas. En Windows 10 la ruta por defecto esC:\Program Files
.%COMMONPROGRAMFILES%
: Remite a la carpeta donde los programas almacenan archivos comunes. En sistemas Windows modernos, la ruta por defecto esC:\Program Files\Common Files
.%WINDIR%
: Se refiere a la carpeta donde se instala Windows. La ruta por defecto esC:\Windows
%PATH%
: Es la variable más importante de un sistema (también existe en Linux). Indica al terminal CMD las rutas en las que tiene que buscar el ejecutable de un comando. Si el comando no está almacenado en una de estas rutas, para ejecutarlo deberemos escribir la ruta completa.
Existen otras muchas Variables de Entorno en Windows. Si te interesa conocerlas todas, es tan sencillo como abrir una ventana de Símbolos de Sistema y teclear el siguiente comando que mostrará un listado con todas las variables de entorno:
set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Usuario1\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files COMPUTERNAME=COMPUTER ComSpec=C:\WINDOWS\system32\cmd.exe DriverData=C:\Windows\System32\Drivers\DriverData FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer FPS_BROWSER_USER_PROFILE_STRING=Default HOMEDRIVE=C: HOMEPATH=\Users\Usuario1 LOCALAPPDATA=C:\Users\Usuario1\AppData\Local NUMBER_OF_PROCESSORS=124 OS=Windows_NT Path=C:\Windows\system32;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\Usuario1\AppData\Local\Microsoft\WindowsApps PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 94 Stepping 3, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=5e03 ProgramData=C:\ProgramData ProgramFiles=C:\Program Files ProgramW6432=C:\Program Files PROMPT=$P$G PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules PUBLIC=C:\Users\Public SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=C:\Users\Usuario1\AppData\Local\Temp TMP=C:\Users\Usuario1\AppData\Local\Temp USERDOMAIN=COMPUTER USERDOMAIN_ROAMINGPROFILE=COMPUTER USERNAME=Usuario1 USERPROFILE=C:\Users\Usuario1 windir=C:\WINDOWS
Variables de Entorno en Linux
En Sistemas Linux las Variables de Entorno cumplen el mismo papel pero podemos hacer referencia a ellas utilizando el símbolo $
.
En la guía de Linux veremos un poco más en profundidad los usos que les podemos dar y cómo modificarlas, sin embargo, si te interesa ver todas las Variables, puedes utilizar el siguiente comando:
env COLORFGBG=15;0 COLORTERM=truecolor COMMAND_NOT_FOUND_INSTALL_PROMPT=1 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DESKTOP_SESSION=lightdm-xsession DISPLAY=:0.0 DOTNET_CLI_TELEMETRY_OPTOUT=1 GDMSESSION=lightdm-xsession GTK_MODULES=gail:atk-bridge HOME=/home/kali LANG=en_US.UTF-8 LANGUAGE= LOGNAME=kali PANEL_GDK_CORE_DEVICE_EVENTS=0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games POWERSHELL_TELEMETRY_OPTOUT=1 POWERSHELL_UPDATECHECK=Off PWD=/home/kali QT_ACCESSIBILITY=1 QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_QPA_PLATFORMTHEME=qt5ct SESSION_MANAGER=local/kali:@/tmp/.ICE-unix/1267,unix/kali:/tmp/.ICE-unix/1267 SHELL=/usr/bin/zsh SSH_AGENT_PID=1312 SSH_AUTH_SOCK=/tmp/ssh-opixEU7CoMjz/agent.1267 TERM=xterm-256color USER=kali WINDOWID=0 XAUTHORITY=/home/kali/.Xauthority XDG_CONFIG_DIRS=/etc/xdg XDG_CURRENT_DESKTOP=XFCE XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/kali XDG_MENU_PREFIX=xfce- XDG_RUNTIME_DIR=/run/user/1000 XDG_SEAT=seat0 XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 XDG_SESSION_CLASS=user XDG_SESSION_DESKTOP=lightdm-xsession XDG_SESSION_ID=3 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 XDG_SESSION_TYPE=x11 XDG_VTNR=7 _JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true SHLVL=1 OLDPWD=/home/kali
Es importante saber de donde salen estas Variables de Entorno en Linux. Pueden provenir de 3 archivos:
/etc/environment
: Para aquellas Variables de Entorno que son independientes de la Shell./etc/profile
: Para todas las Shells interactivas en las que hagamos login./etc/bash.bashrc
: Para las Shells nologin.
Estos archivos y su importancia se verán en el curso de Linux. Por ahora, es una información avanzada que, si no entiendes, lo harás cuando aumenten tus conocimientos de Linux.
Conclusión
Como hemos podido ver en esta entrada, las Variables de Entorno son una pieza fundamental de los Sistemas Operativos Modernos.
De hecho, el primer interprete de comandos que integraba las Variables de Entorno era la Bourne Shell desarrollada en 1977. Si quieres saber más sobre este tema, lee la siguiente entrada: Terminal Linux. ¿Qué es? ¡Descubre su historia!
Gracias a estas Variables, las aplicaciones pueden funcionar sin necesidad de ser configuradas para cada terminal concreto. Esto facilitó que los ordenadores pudieran llegar a todos los hogares, ya que redujo la barrera técnica de entrada.