Hacer que las variables de entorno sean persistentes
Hasta ahora, hemos estado estableciendo variables de entorno que solo duran durante la sesión actual de la terminal. Una vez que cierras la terminal o te desconectas, estas variables se pierden. En este paso, aprenderás cómo hacer que las variables de entorno sean persistentes a través de sesiones.
Almacenar variables de entorno en archivos de configuración
Hay varios archivos donde puedes establecer variables de entorno para que sean persistentes:
~/.bashrc o ~/.zshrc: Para variables específicas de un usuario
/etc/environment: Para variables de todo el sistema
/etc/profile o archivos en /etc/profile.d/: Para variables de todo el sistema que se cargan al iniciar sesión
Vamos a agregar algunas variables de entorno al archivo de configuración de la shell del usuario. Dado que este entorno de laboratorio utiliza ZSH, editaremos el archivo ~/.zshrc:
nano ~/.zshrc
Desplázate hasta el final del archivo y agrega las siguientes líneas:
## Custom environment variables
export EDITOR="nano"
export CUSTOM_PATH="$HOME/bin"
export GREETING="Hello from .zshrc!"
Guarda el archivo (presiona Ctrl+O, luego Enter) y sal de nano (presiona Ctrl+X).
Para aplicar estos cambios a tu sesión actual, debes "sourcear" (cargar) el archivo:
source ~/.zshrc
Ahora, verifica si las variables están establecidas:
echo $EDITOR
echo $CUSTOM_PATH
echo $GREETING
Deberías ver los valores que estableciste en el archivo .zshrc.
Estas variables de entorno ahora estarán disponibles cada vez que inicies una nueva sesión de shell.
Crear un archivo personalizado para variables de entorno
Una buena práctica para gestionar las variables de entorno es crear un archivo separado solo para ellas, especialmente para variables específicas de un proyecto. Esto facilita la gestión y el intercambio de configuraciones.
Vamos a crear un archivo llamado .env en tu directorio de proyecto:
cd ~/project
nano .env
Agrega el siguiente contenido:
## Project environment variables
export PROJECT_NAME="Linux Environment Lab"
export PROJECT_VERSION="1.0.0"
export DEBUG_MODE="true"
Guarda el archivo (presiona Ctrl+O, luego Enter) y sal de nano (presiona Ctrl+X).
Para cargar estas variables en tu sesión actual, "sourcea" el archivo:
source ~/project/.env
Ahora verifica si las variables están establecidas:
echo $PROJECT_NAME
echo $PROJECT_VERSION
echo $DEBUG_MODE
Deberías ver los valores del archivo .env.
Crear un script para cargar variables de entorno
Finalmente, vamos a crear un script que cargue variables de entorno desde un archivo. Este es un patrón común en entornos de desarrollo:
cd ~/project
nano load_env.sh
Agrega el siguiente contenido:
#!/bin/bash
## Script to load environment variables from a .env file
ENV_FILE=".env"
if [[ -f "$ENV_FILE" ]]; then
echo "Loading environment variables from $ENV_FILE"
## Read each line from the .env file
while IFS= read -r line || [[ -n "$line" ]]; do
## Skip comments and empty lines
if [[ $line =~ ^## ]] || [[ -z $line ]]; then
continue
fi
## Export the variable if it starts with "export "
if [[ $line == export* ]]; then
## Remove the "export " prefix and export the variable
eval "${line}"
echo "Exported: ${line#export }"
fi
done < "$ENV_FILE"
echo "Environment variables loaded successfully"
else
echo "Error: $ENV_FILE file not found"
exit 1
fi
Guarda el archivo (presiona Ctrl+O, luego Enter) y sal de nano (presiona Ctrl+X).
Haz el script ejecutable:
chmod +x ~/project/load_env.sh
Ahora, desestablece las variables que establecimos previamente y luego ejecuta el script para cargarlas nuevamente:
unset PROJECT_NAME PROJECT_VERSION DEBUG_MODE
echo "PROJECT_NAME: $PROJECT_NAME"
## Now load the variables using the script
~/project/load_env.sh
## Check if the variables are now set
echo "PROJECT_NAME: $PROJECT_NAME"
El script lee el archivo .env y exporta cada variable definida con la palabra clave export.
Este enfoque se utiliza comúnmente en entornos de desarrollo para gestionar variables de entorno específicas de un proyecto.