fbpx Variables de entorno en Linux: env, export y ejemplos | Certificação Linux

Variables de entorno en Linux: env, export y las más importantes

📅 01/01/2019 ⏱ 6 min ✍️ Uira Ribeiro
Linuxcomandos
Variables de entorno en Linux: env, export y las más importantes
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

Variables de entorno son pares clave=valor que el sistema operativo mantiene en memoria y pone a disposición de todos los procesos en ejecución. Controlan el comportamiento del shell, de los programas y de los scripts — desde dónde el sistema busca ejecutables (PATH) hasta el idioma que muestran los programas (LANG).

Comprender las variables de entorno es fundamental para administrar servidores, escribir scripts robustos y aprobar certificaciones como LPIC-1 (tópico 105).

Listar variables de entorno

Existen tres comandos para listar variables, cada uno con un alcance diferente:

# env — lista apenas variáveis de ambiente exportadas
env

# printenv — igual ao env, mas pode filtrar por nome
printenv
printenv PATH          # mostra só a variável PATH
printenv HOME USER     # múltiplas variáveis de uma vez

# set — lista variáveis de ambiente + variáveis locais do shell + funções
set

La diferencia práctica: env y printenv muestran solo lo que los procesos hijos heredan. set muestra todo, inclusive variables temporales que existen solo en la sesión actual del shell.

Variables de entorno más importantes

VariableContenidoEjemplo
PATHDirectorios donde el shell busca ejecutables/usr/local/bin:/usr/bin:/bin
HOMEDirectorio home del usuario actual/home/joao
USERNombre del usuario conectadojoao
SHELLShell predeterminado del usuario/bin/bash
LANGIdioma y codificación predeterminadospt_BR.UTF-8
PWDDirectorio de trabajo actual/var/www/html
OLDPWDDirectorio anterior (antes del último cd)/home/joao
EDITOREditor de texto predeterminado del sistemavim
TERMTipo de terminal en usoxterm-256color
PS1Formato del prompt del shell\u@\h:\w\$
UIDID numérico del usuario1000
HOSTNAMENombre del host de la máquinaservidor01

Crear y exportar variables

Variable local (solo existe en la sesión actual del shell)

# Cria variável local — processos filhos NÃO herdam
NOME="João"
echo $NOME          # João
bash -c 'echo $NOME' # (vazio — filho não herda)

Variable exportada (procesos hijos heredan)

# export torna a variável disponível para processos filhos
export NOME="João"
bash -c 'echo $NOME'  # João — filho herda!

# Criar e exportar em uma linha só
export DB_HOST="localhost"
export DB_PORT=5432

# Ver se uma variável está exportada
export -p | grep NOME

Variable para un solo comando (sin afectar el entorno actual)

# Passa a variável APENAS para aquele comando — não altera a sessão
LANG=en_US.UTF-8 man ls          # manual em inglês

# Muito útil para scripts e testes
NODE_ENV=production npm start
DEBUG=* node app.js
PYTHONDONTWRITEBYTECODE=1 python script.py

# Múltiplas variáveis antes do comando
LANG=en_US DB_HOST=prod ./meu_script.sh

El comando env

Listar variables filtradas

# Ver todas as variáveis de ambiente
env

# Filtrar por padrão
env | grep PATH
env | grep -i db   # busca case-insensitive

Ejecutar comando con entorno modificado

# Sobrescrever PATH para um único comando
env PATH=/usr/local/bin:/usr/bin which python

# Adicionar variável sem afetar o shell atual
env MYSQL_HOST=db.prod.com ./backup.sh

Ejecutar con entorno limpio (-i)

La bandera -i (o --ignore-environment) inicia el comando con un entorno completamente vacío — útil para pruebas y para garantizar que ninguna variable del entorno del usuario afecte la ejecución:

# Roda bash com ambiente completamente limpo
env -i bash

# Roda script com apenas as variáveis necessárias
env -i HOME=/tmp PATH=/usr/bin:/bin ./script.sh

# Ver quantas variáveis existem normalmente vs. ambiente limpo
env | wc -l         # ~30–50 variáveis normalmente
env -i env | wc -l  # 0

Shebang con env en scripts

Usar /usr/bin/env en el shebang en lugar de la ruta directa del intérprete hace que el script sea más portable — env encuentra el intérprete en el PATH del sistema, dondequiera que esté instalado:

#!/usr/bin/env python3
# Funciona em qualquer sistema onde python3 está no PATH

#!/usr/bin/env bash
# Melhor que #!/bin/bash em sistemas onde bash pode estar em outro local

#!/usr/bin/env node
# Comum em scripts Node.js

Variables permanentes: dónde definir

Las variables creadas en la terminal desaparecen cuando la sesión termina. Para hacerlas permanentes, elige el archivo adecuado según el alcance deseado:

ArchivoAlcanceCuándo se lee
~/.bashrcUsuario actualEn cada shell interactivo (no-login)
~/.bash_profile o ~/.profileUsuario actualLogin vía terminal o SSH
/etc/environmentSistema enteroLogin de cualquier usuario (PAM)
/etc/profileSistema enteroLogin de cualquier usuario (shell login)
/etc/profile.d/*.shSistema enteroLogin de cualquier usuario
# Adicionar variável permanente para o usuário atual
echo 'export EDITOR=vim' >> ~/.bashrc
echo 'export JAVA_HOME=/usr/lib/jvm/java-17' >> ~/.bashrc
source ~/.bashrc   # Recarrega sem precisar fechar o terminal

# Adicionar ao PATH do usuário (sem sobrescrever o PATH existente)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

# Variável para todos os usuários do sistema
echo 'EDITOR=vim' | sudo tee -a /etc/environment

# Verificar se foi aplicado após recarregar
source ~/.bashrc
echo $EDITOR

Manipular el PATH

El PATH es la variable más importante del sistema — define dónde el shell busca ejecutables. El orden de los directorios importa: el shell usa el primer ejecutable que encuentre.

# Ver o PATH atual (separado por :)
echo $PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Adicionar diretório no início do PATH (maior prioridade)
export PATH="/opt/meu_programa/bin:$PATH"

# Adicionar no final (menor prioridade)
export PATH="$PATH:/opt/meu_programa/bin"

# Verificar qual executável o shell vai usar
which python3
type python3

# Ver todos os executáveis com aquele nome no PATH
type -a python

Eliminar variables

# unset remove a variável completamente
unset NOME
echo $NOME     # (vazio)

# Remover do export (mantém como local)
export -n NOME

Variables en scripts

#!/usr/bin/env bash

# Boas práticas em scripts
set -euo pipefail   # sai em erro, trata variáveis não definidas, propaga erros em pipes

# Ler variável de ambiente com valor padrão
DB_HOST="${DB_HOST:-localhost}"
DB_PORT="${DB_PORT:-5432}"

# Checar se variável obrigatória está definida
if [ -z "${API_KEY:-}" ]; then
    echo "ERRO: API_KEY não definida" >&2
    exit 1
fi

# Exibir variáveis definidas para debug
env | sort | grep "^DB_"

Archivos .env y dotenv

Proyectos modernos (Node.js, Python, Docker) usan archivos .env para centralizar variables de configuración:

# Arquivo .env típico
DB_HOST=localhost
DB_PORT=5432
DB_NAME=meuapp
SECRET_KEY=chave-super-secreta

# Carregar no shell manualmente
export $(grep -v '^#' .env | xargs)

# Com Docker
docker run --env-file .env minha_imagem

# Com Docker Compose (lê .env automaticamente)
# Mas também pode definir explicitamente:
# env_file:
#   - .env

Referencia rápida

# Listar todas as variáveis exportadas
env | sort

# Criar variável local
VARIAVEL="valor"

# Exportar para processos filhos
export VARIAVEL="valor"

# Variável só para um comando
VAR=valor comando

# Ambiente limpo
env -i comando

# Remover variável
unset VARIAVEL

# Tornar permanente (usuário)
echo 'export VARIAVEL="valor"' >> ~/.bashrc && source ~/.bashrc

# Ver de onde vem um executável
which python3
type -a python3

# Adicionar ao PATH permanentemente
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp