Resumen
En este tutorial, aprenderás a configurar las variables de entorno en Ubuntu, CentOS, Red Hat, básicamente cualquier distribución de Linux para un solo usuario y globalmente para todos los usuarios. También aprenderá cómo listar todas las variables de entorno y cómo desestablecer (borrar) las variables de entorno existentes.
Las variables de entorno se utilizan comúnmente dentro del shell Bash. También es un medio común para configurar servicios y manejar los secretos de las aplicaciones web.
No es raro que la información específica del entorno, como los puntos finales y las contraseñas, por ejemplo, se almacenen como variables de entorno en un servidor. También se utilizan para establecer las ubicaciones de los directorios importantes para muchos paquetes populares, como JAVA_HOME para Java.
Establecimiento de una variable de entorno
Para establecer una variable de entorno se utiliza el comando export. Le damos un nombre a la variable, que es lo que se utiliza para acceder a ella en los scripts de la shell y en las configuraciones, y luego un valor para contener los datos que se necesiten en la variable.
export NAME=VALUE
Por ejemplo, para establecer la variable de entorno del directorio home de una instalación manual de OpenJDK 11, utilizaríamos algo similar a lo siguiente.
export JAVA_HOME=/opt/openjdk11
Para dar salida al valor de la variable de entorno desde el shell, utilizamos el comando echo y anteponemos al nombre de la variable un signo de dólar ($).
echo $JAVA_HOME
Y siempre que la variable tenga un valor se emitirá el eco. Si no se establece ningún valor, entonces se mostrará una línea vacía en su lugar.
Desconfiguración de una variable de entorno
Para desconfigurar una variable de entorno, que elimina su existencia por completo, utilizamos el comando unset. Simplemente reemplazar la variable de entorno con una cadena vacía no la eliminará, y en la mayoría de los casos probablemente causará problemas con los scripts o la aplicación que espera un valor válido.
Para desestablecer una variable de entorno se utiliza la siguiente sintaxis
unset VARIABLE_NAME
Por ejemplo, para desestablecer la variable de entorno JAVA_HOME, utilizaríamos el siguiente comando.
unset JAVA_HOME
Listado de todas las variables de entorno establecidas
Para listar todas las variables de entorno, simplemente utilizamos el comando set sin ningún argumento.
set
Un ejemplo de la salida sería algo similar a lo siguiente, que ha sido truncado por brevedad.
BASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=(="0") BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_VERSINFO=(="2" ="8") BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=(="5" ="0" ="3" ="1" ="release" ="x86_64-pc-linux-gnu") BASH_VERSION='5.0.3(1)-release' COLUMNS=208 DIRSTACK=() EUID=1000 GROUPS=() HISTCONTROL=ignoreboth HISTFILE=/home/ubuntu/.bash_history HISTFILESIZE=2000 HISTSIZE=1000 HOME=/home/ubuntu HOSTNAME=ubuntu1904 HOSTTYPE=x86_64 IFS=$' \t\n' LANG=en_US.UTF-8 LESSCLOSE='/usr/bin/lesspipe %s %s' LESSOPEN='| /usr/bin/lesspipe %s' LINES=54
Variables de entorno existentes para un usuario
Cuando se establece una variable de entorno desde el shell mediante el comando export, su existencia termina cuando finalizan las sesiones del usuario. Esto es problemático cuando necesitamos que la variable persista a través de las sesiones.
Para hacer persistente un entorno para un usuario, exportamos la variable desde el script del perfil del usuario.
- Abre el perfil del usuario actual en un editor de texto
vi ~/.bash_profile
- Agrega el comando exportar para cada variable de entorno que quieras que persista.
export JAVA_HOME=/opt/openjdk11
- Guarda los cambios.
- Cree un nuevo archivo bajo /etc/profile.d para almacenar la(s) variable(s) de entorno global. El nombre del debe ser contextual para que otros puedan entender su propósito. Para las demostraciones, crearemos una variable de entorno permanente para HTTP_PROXY.
sudo touch /etc/profile.d/http_proxy.sh
- Abra el perfil por defecto en un editor de texto.
sudo vi /etc/profile.d/http_proxy.sh
- Añadir nuevas líneas para exportar las variables de entorno
export HTTP_PROXY=http://my.proxy:8080
export HTTPS_PROXY=https://my.proxy:8080
export NO_PROXY=localhost,::1,.example.com
.
- Guarda los cambios y sal del editor de texto
Sólo con añadir la variable de entorno al perfil bash de un usuario no se exportará automáticamente. Sin embargo, la variable se exportará la próxima vez que el usuario inicie sesión.
Para aplicar inmediatamente todos los cambios a bash_profile, utilice el comando source.
source ~/.bash_profile
Exportar Variable de Entorno
Exportar es un comando del shell integrado en Bash que se utiliza para exportar una variable de entorno y permitir que los nuevos procesos hijos la hereden.
Para exportar una variable de entorno se ejecuta el comando export mientras se establece la variable.
export MYVAR="my variable value"
Podemos ver una lista completa de las variables de entorno exportadas ejecutando el comando export sin argumentos.
export
SHELL=/bin/zshSHLVL=1SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.1pB5Pry8Id/ListenersTERM=xterm-256colorTERM_PROGRAM=vscodeTERM_PROGRAM_VERSION=1.48.2
Para ver todas las variables exportadas en el shell actual se utiliza la bandera -p
con export.
export -p
Configuración de variables de entorno globales permanentes para todos los usuarios
Se puede crear una variable de entorno permanente que persista después de un reinicio añadiéndola al perfil predeterminado. Este perfil es cargado por todos los usuarios del sistema, incluyendo las cuentas de servicio.
Toda la configuración global del perfil se almacena en /etc/profile. Y aunque este archivo puede ser editado directorio, en realidad se recomienda almacenar las variables de entorno globales en un directorio llamado /etc/profile.d, donde se encuentra una lista de archivos que se utilizan para establecer las variables de entorno para todo el sistema.
Conclusión
Este tutorial cubrió cómo establecer y desestablecer variables de entorno para todas las distribuciones de Linux, desde Debian hasta Red Hat. También ha aprendido a establecer variables de entorno para un solo usuario, así como para todos los usuarios.