Novos Contextos, Mesma Filosofia
Esse ano não estou tentando reinventar meu shell. Estou preparando para que ele funcione em qualquer lugar.
Com múltiplas máquinas, containers e WSL em rotação, eu precisava de um setup rápido, limpo e consistente — independente do contexto.
Adicionei apenas o necessário para garantir flexibilidade.
Introduzindo profile.zsh
: Uma Nova Camada Superior
A maior mudança estrutural deste ano: profile.zsh
.
Ele roda antes de tudo. Seu objetivo: definir decisões de sistema. Nada específico do ambiente vive mais no .zshrc.symlink
— tudo começa aqui.
# profile.zsh
export ZSH="$HOME/.zsh"
export DOTFILES="$HOME/.dotfiles"
É o equivalente a uma BIOS do shell — suposições base, sem ruído.
Camada | Responsabilidade |
---|---|
profile.zsh | Paths, infos do host, suposições |
bootstrap.zsh | Exports, setup base |
aliases.zsh | Atalhos de desenvolvedor |
functions.zsh | Utilitários reutilizáveis |
Reordenando para Clareza e Segurança
O .zshrc.symlink
agora se parece com um plano de inicialização:
source "$DOTFILES/profile.zsh"
source "$DOTFILES/bootstrap.zsh"
source "$DOTFILES/aliases.zsh"
source "$DOTFILES/functions.zsh"
Essa ordem reflete intenção:
- Definir a base
- Preparar o shell
- Adicionar comandos úteis
E como $DOTFILES
e $ZSH
são definidos cedo, todos os paths funcionam de forma previsível.
Scripting Defensivo: Evitando Deriva de Setup
Um pequeno ajuste no bootstrap.zsh
mostra essa mudança:
[ -z "$ZSH" ] && export ZSH="$HOME/.zsh"
Esses guardas evitam que coisas quebrem em máquinas com instalações parciais ou ambientes onde nem tudo foi montado ainda.
É um pequeno investimento para um grande ganho: confiança.
Pensamento Modular Para Uma Vida Multi-Host
Esse setup não é mais “os dotfiles do meu laptop”.
É meu shell em:
- Mac
- WSL
- Containers remotos de desenvolvimento
- Sessões de CI
E ele simplesmente funciona.
Cada arquivo tem um papel. Cada papel é testável. Cada suposição está escrita.
# Detecção de WSL (exemplo)
if grep -qEi "(Microsoft|WSL)" /proc/version; then
export WSL=true
fi
Dotfiles não são mais estáticos — são adaptativos.
Referenciando Segredos Fora do Repositório
Este ano também padronizei como fontei arquivos de segredo fora do repositório principal:
# De um repositório pessoal de segredos
[ -f "$HOME/code/private-dotfiles/zsh/secrets.zsh" ] && source "$HOME/code/private-dotfiles/zsh/secrets.zsh"
Essa abordagem me permite:
- Manter meu config público seguro
- Compartilhar dotfiles sem preocupações
- Ter múltiplos escopos de confiança (pessoal, infraestrutura, clientes)
Dotfiles não precisam de segredos — só precisam saber onde procurar.
2025 É Sobre Velocidade, Não Tamanho
Este post não é longo porque o trabalho não foi barulhento.
Foi:
- Uma reordenação de responsabilidades
- Uma limpeza de modelo mental
- Uma preparação para ambientes fora do meu controle
E significa que posso abrir um novo terminal e confiar que ele será rápido, limpo e meu.