O que são variáveis de ambiente?
Variáveis de ambiente são pares chave-valor disponíveis para processos do sistema. Permitem configurar comportamento de aplicações sem hardcodar valores no código — fundamental para segurança (senhas, chaves de API) e portabilidade entre ambientes (dev, staging, produção).
Listando variáveis de ambiente
env # lista todas as variáveis do ambiente atual
printenv # mesma função
printenv PATH # valor de uma variável específica
echo $HOME # outra forma de acessar o valor
echo $USER # usuário atual
echo $PATH # caminhos onde o sistema busca executáveis
Definindo variáveis temporárias
# Válida apenas na sessão atual do terminal
export MINHA_VAR="valor"
export DB_HOST="localhost"
export DB_PORT="5432"
# Válida apenas para o próximo comando
NODE_ENV=production node app.js
# Verificar se foi definida
echo $MINHA_VAR
Tornando variáveis permanentes
Para que as variáveis persistam entre sessões, adicione ao arquivo de configuração do shell:
# Para o usuário atual — edite ~/.bashrc ou ~/.profile
echo 'export MINHA_VAR="valor"' >> ~/.bashrc
source ~/.bashrc # recarrega sem precisar reabrir o terminal
# Para todos os usuários do sistema — requer sudo
sudo nano /etc/environment
# Adicione: MINHA_VAR="valor"
# Para um serviço específico (systemd)
sudo systemctl edit meu-servico
# Adicione na seção [Service]:
# Environment="MINHA_VAR=valor"
Trabalhando com arquivos .env
O padrão mais comum em aplicações modernas é usar um arquivo .env na raiz do projeto:
# .env — nunca comite esse arquivo no git!
DB_HOST=localhost
DB_PORT=5432
DB_USER=meu_usuario
DB_PASSWORD=senha_super_secreta
API_KEY=chave_da_api_aqui
NODE_ENV=production
# Carregar .env no shell atual
set -a; source .env; set +a
# Usar com Node.js (via dotenv)
require('dotenv').config()
process.env.DB_HOST
# Usar com Docker
docker run --env-file .env minha-imagem
Variáveis especiais do sistema
$HOME # diretório home do usuário
$USER # nome do usuário atual
$PATH # diretórios de executáveis
$SHELL # shell em uso
$PWD # diretório atual
$LANG # idioma do sistema
$? # código de saída do último comando (0 = sucesso)
$ # PID do processo atual
$! # PID do último processo em background
Manipulando o PATH
# Adicionar diretório ao PATH temporariamente
export PATH="$PATH:/meu/novo/diretorio"
# Adicionar permanentemente (~/.bashrc)
echo 'export PATH="$PATH:/usr/local/meu-programa/bin"' >> ~/.bashrc
source ~/.bashrc
# Ver onde um executável está
which node
which python3
whereis nginx
Segurança: Nunca comite arquivos .env com senhas ou chaves de API no Git. Adicione .env ao .gitignore e use .env.example com as variáveis sem valores reais como documentação.