As variáveis de ambiente mudam de acordo com o contexto? Use o direnv
Precisa ficar definindo variáveis de ambiente o tempo inteiro dependendo do contexto? Pare de sofrer, instale o direnv.
Preciso gerenciar diversos ambientes remotamente, cada qual com suas próprias variáveis de ambiente. Entram aí credenciais da AWS, arquivos de configuração do Kubernetes, caminhos, paths..
Uma solução é ter um arquivo no qual você armazene estes scripts que são executados quando necessários no CLI, mas é um processo muito chato. Entra em ação o direnv (pense nele como um "ASDF para suas variáveis de ambiente", que é uma extensão para o shell do Linux que permite carregar ou descarregar variáveis de ambiente no Linux de acordo com o diretório corrente do seu shell.
Bora ver como funciona?
Ingredientes

- Linux (ou WSL se estiver no Windows).
- Instalação do direnv (varia de acordo com sua distribuição). Maiores detalhes no site oficial (https://direnv.net/).
Exemplo prático: configuração do Kubernetes e credenciais da AWS
Suponha que você tenha dois ambientes, cada qual com as seguintes situações:
- Projeto Brutalidade
- Você precisa realizar ações usando Terraform no ambiente AWS. Vai precisar então das variáveis de ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY.
- Tem um cluster Kubernetes que precisa ser mantido. Então é necessário de tempos em tempos alterar o valor da variável de ambiente KUBECONFIG.
- Projeto Leveza
- Mesma situação do projeto Brutalidade, mas você também precisa de uma API Key que é definida por variável de ambiente para invocar alguns endpoints de manutenção. Esta variável de ambiente se chama API_KEY.
Quer ver o direnv funcionando? Olha o print a seguir:

Observe quando entro no diretório brutalidade. Me é exposto um alerta, dizendo que para carregar as variáveis, preciso executar o comando direnv allow. Executo o comando e... variáveis carregadas (você só precisa executar este comando uma vez por diretório).
Notou que quando saímos do diretório as variáveis de ambiente são descarregadas? Muito fácil, muito lindo, né?
Como por pra funcionar
Se você já tem o direnv instalado, basta criar um arquivo chamado .envrc no diretório em que a configuração deva ser ativada. O conteúdo será essencialmente uma série de instruções export tal como no exemplo a seguir:
export KUBECONFIG=~/projetos/leveza/k8s-config.yaml
export AWS_ACCESS_KEY_ID=CHAVE_SECRETISSIMA
export AWS_SECRET_ACCESS_KEY=SECRETISSIMA_SECRETISSIMA
export API_KEY=teste_levissimo
Mudou pro diretório, script carregado. E sabe o que é legal? A configuração se aplica a todos os sub-diretórios também. E é só isto. Legal, né?
.gitignore o arquivo .envrc para evitar problemas, ok?
