Truco en Linux: Ver variables de entorno exportadas
En cualquier sistema Linux, las variables de entorno juegan un papel esencial para configurar el comportamiento de shells, aplicaciones y servicios. A veces es imprescindible listar aquellas que han sido exportadas (es decir, que están disponibles para procesos hijos) para depurar problemas o documentar el entorno de ejecución. En este artículo detallado aprenderás varias técnicas profesionales para inspeccionar, filtrar y gestionar estas variables.
1. ¿Qué son las variables de entorno exportadas
Una variable de entorno es un par nombre=valor accesible dentro del entorno del proceso. Al exportar una variable (por ejemplo con export NOMBRE=valor
en Bash), ésta se marca para que programas y scripts invocados desde ese shell la hereden. Las variables no exportadas permanecen confinadas al shell actual.
2. Métodos básicos para listar variables exportadas
- env: muestra todas las variables de entorno actuales.
- printenv: parecido a
env
, con opción de filtrar por nombre (printenv NOMBRE
). - export -p (en Bash): lista exclusivamente las variables marcadas con
export
. - declare -x (en Bash y Zsh): lista las variables exportadas con un prefijo
declare -x
.
Comando | Descripción | Ejemplo |
---|---|---|
env | Muestra todas las variables de entorno. | env |
printenv | Imprime variables acepta nombre como argumento. | printenv PATH |
export -p | Lista variables exportadas en Bash. | export -p |
declare -x | Equivalente a export -p en Bash/Zsh. |
declare -x |
3. Filtrar variables según criterios
En escenarios avanzados quizá necesites aislar un subconjunto de variables. He aquí algunos trucos:
- Filtrado por nombre:
env grep -i DATABASE
oexport -p grep -E DB_SQL_
. - Variables relacionadas con VPNs:
env grep -i vpn
. Por ejemplo, al usar OpenVPN podrás verOVPN_CONFIG
oOVPN_LOG
. - Orden alfabético:
export -p sort
oprintenv sort
para facilitar búsquedas.
4. Uso práctico en scripts y servicios
Supongamos que creas un script de despliegue que requiere varias variables exportadas. Puedes verificar al inicio:
#!/bin/bash required=( DB_HOST DB_USER DB_PASS ) for var in {required[@]} do if [ -z (printenv var) ] then echo Error: la variable var no está definida o exportada. exit 1 fi done # Continuar con la ejecución...
5. Persistencia de variables exportadas
Para que tus variables sobrevivan al cierre de sesión, añádelas en:
- ~/.bashrc o ~/.zshrc: para usuarios individuales.
- /etc/environment: formato clave=valor para todo el sistema.
- /etc/profile.d/.sh: scripts de inicialización global.
- Systemd: en servicios unitarios, sección
[Service]
→Environment=VAR=valor
.
6. Buenas prácticas y seguridad
- No incluyas secretos sensibles (API keys, contraseñas) en archivos públicos. Usa
/etc/credentials.env
con permisos restringidos (chmod 600
). - En ambientes de contenedores Docker, emplea la sección
environment:
en tusdocker-compose.yml
o--env-file
. - Revisa variables con
declare -px
para asegurarte de no exponer rutas o tokens innecesarios.
7. Otros shells: Bash vs Zsh vs Fish
- Bash y Zsh usan
export
,export -p
ydeclare -x
. - Fish emplea
set -x VAR valor
yset -x
muestra las exportadas. - En POSIX shells (
sh
),export
yenv
suelen ser suficientes.
8. Caso práctico: Variables para WireGuard
Imagina que gestionas túneles VPN con WireGuard. Podrías definir en ~/.bashrc
:
export WG_INTERFACE=wg0 export WG_ENDPOINT=vpn.miempresa.com:51820 export WG_PRIVATE_KEY=/home/usuario/keys/wg_private.key
Y luego confirmar con:
export -p grep -E WG_
Conclusión
Conocer cómo listar y filtrar las variables de entorno exportadas te brinda control total sobre los entornos de shell y servicios. Desde un chequeo rápido con env
hasta scripts robustos que validan precondiciones, este truco es básico para administradores de sistemas, desarrolladores DevOps y usuarios avanzados. ¡Pruébalo y optimiza tu flujo de trabajo en Linux!
Leave a Reply