Saltar al contenido
Home » Linux » Variables de Entorno. ¿Qué son y cómo funcionan?

Variables de Entorno. ¿Qué son y cómo funcionan?

Píldoras de Conocimiento 14. Variables de Entorno

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ía C:\Users\Usuario1\ mientras que en el caso de Windows XP sería C:\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 es C:\Users\NombreDeUsuario\AppData\Roaming.
  • %PROGRAMFILES%: Es la carpeta donde se instalan los programas. En Windows 10 la ruta por defecto es C:\Program Files.
  • %COMMONPROGRAMFILES%: Remite a la carpeta donde los programas almacenan archivos comunes. En sistemas Windows modernos, la ruta por defecto es C:\Program Files\Common Files.
  • %WINDIR%: Se refiere a la carpeta donde se instala Windows. La ruta por defecto es C:\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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *