Aqui está uma lista do que cada arquivo deve / não deve conter, na minha opinião:
.zshenv
[Leia toda vez]
Esse arquivo é sempre originado, portanto, ele deve definir variáveis de ambiente que precisam ser atualizadas com frequência . PATH (ou o caminho correspondente da contraparte ) é um bom exemplo, porque você provavelmente não deseja reiniciar toda a sessão para atualizá-la. Ao defini-lo nesse arquivo, a reabertura de um emulador de terminal iniciará uma nova instância do Zsh com o valor PATH atualizado.
Mas lembre-se de que esse arquivo é lido mesmo quando o Zsh é iniciado para executar um único comando (com a opção -c ), mesmo por outra ferramenta como make
. Você deve ter muito cuidado para não modificar o comportamento padrão dos comandos padrão, pois isso pode quebrar algumas ferramentas (definindo aliases, por exemplo).
.zprofile
[Leia no login]
Eu pessoalmente trato esse arquivo como .zshenv
se fosse comandos e variáveis que devem ser definidas uma vez ou que não precisam ser atualizadas com frequência :
- variáveis de ambiente para configurar ferramentas (sinalizadores para compilação, localização da pasta de dados etc.)
- configuração que executa comandos (como
SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"
), pois pode levar algum tempo para ser executado.
Se você modificar este arquivo, poderá aplicar as atualizações de configuração executando um shell de logon:
exec zsh --login
.zshrc
[Leia quando interativo]
Coloquei aqui tudo o necessário apenas para uso interativo :
- pronto,
- conclusão do comando,
- correção de comando,
- sugestão de comando,
- destaque do comando,
- coloração de saída,
- Pseudônimo, suposto nome,
- combinações de teclas,
- comanda o gerenciamento de histórico,
- outras ferramentas interativas diversas (auto_cd, manydots-magic) ...
.zlogin
[Leia no login]
Este arquivo é como .zprofile
, mas é lido depois .zshrc
. Você pode considerar o shell totalmente configurado no tempo de execução .zlogin
Então, eu o uso para iniciar comandos externos que não modificam os comportamentos do shell (por exemplo, um gerenciador de login).
.zlogout
[Leia na saída] [Dentro do shell de login]
Aqui, você pode limpar seu terminal ou qualquer outro recurso que foi configurado no login.
Como escolho onde colocar uma configuração
- se for necessário por um comando, execute de forma não interativa :
.zshenv
- se deve ser atualizado em cada novo shell :
.zshenv
- se executar um comando que pode levar algum tempo para concluir :
.zprofile
- se estiver relacionado ao uso interativo :
.zshrc
- se for um comando a ser executado quando o shell estiver totalmente configurado :
.zlogin
- se ele liberar um recurso adquirido no login:
.zlogout