Variáveis de ambiente
Contexto e histórico
As variáveis de ambiente são um mecanismo essencial nos sistemas operacionais modernos, permitindo armazenar informações de configuração e transmitir parâmetros para os processos. Elas foram introduzidas já nos primeiros sistemas Unix e foram adotadas pelo Windows com a chegada do Windows NT.
Por que usar variáveis de ambiente
-
Configuração global
- Caminhos para executáveis (
PATH), diretório temporário (TEMP/TMP), idioma e formato regional (LANG).
- Caminhos para executáveis (
-
Isolamento e portabilidade
- Scripts e aplicações podem ler seus parâmetros sem hardcode de caminhos absolutos.
-
Propagação para processos filhos
- Toda variável definida em um processo pai é herdada pelos seus filhos.
Tipos e escopo
| Escopo | Persistente? | Acessível a partir de | Exemplo de variável |
|---|---|---|---|
| Processo | Não | Processo atual | $env:MYVAR = "session" |
| Usuário | Sim | Todo processo do usuário (nova sessão) | Set-Variable USER via GUI ou PowerShell |
| Máquina | Sim | Todo usuário e todo processo (nova sessão) | Set-Variable MACHINE |
- Sessão (processo): modificação temporária, desaparece ao fechar.
- Usuário: armazenada no registro em
HKCU:\Environment. - Sistema (Máquina): armazenada no registro em
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.
Gerenciamento via interface gráfica
Procure por “Ambiente” nas configurações do Windows.
O provider Env no PowerShell
O PowerShell expõe as variáveis de ambiente como um “PSDrive” chamado Env:.
Listar e ler
# Listar todas as variáveis de ambiente
Get-ChildItem Env:
# Ler uma variável específica
Get-Item Env:PATH
# ou
$env:PATH
Utilitário setx
O binário do Windows setx permite gravar rapidamente:
# Define para o usuário (padrão)
setx LOG_LEVEL "DEBUG"
# Define para a máquina (com /M, requer Admin)
setx NODE_ENV "production" /M
Note :
setxnão altera a sessão atual — ele grava para as próximas sessões.
Boas práticas
- Nomear em MAIÚSCULAS e usar
_para separar palavras. - Limitar o tamanho do
PATH: muito longo pode quebrar alguns programas. - Documentar em um script ou README toda modificação persistente.
- Fazer backup do estado antes de grandes alterações (exportação do registro).
- Testar em VM: valide os scripts em suas máquinas virtuais antes do deploy.
Para lembrar
- Variáveis de ambiente são um mecanismo fundamental para transmitir parâmetros aos processos.
- Elas têm três escopos: Sessão, Usuário, Máquina.
- PowerShell e
setxoferecem meios poderosos para ler, definir e remover essas variáveis. - Sempre teste em VM e documente suas alterações!