Estou procurando orientações sobre o que deve ou não incluir nos vários arquivos de inicialização zsh
.
Entendo a ordem de origem desses arquivos e as condições sob as quais eles são originados, mas ainda não está claro para mim o que deve acontecer em cada um.
Respostas:
Aqui está uma lista não exclusiva do que cada arquivo tende a conter:
.zshenv
é sempre fornecido, geralmente contém variáveis exportadas que devem estar disponíveis para outros programas. Por exemplo,$PATH
,$EDITOR
e$PAGER
são muitas vezes criados em.zshenv
. Além disso, você pode definir$ZDOTDIR
em.zshenv
para especificar um local alternativo para o resto de sua configuração zsh..zshrc
é para configuração de shell interativa. Você define opções para o shell interativo lá com os comandossetopt
eunsetopt
. Você também pode carregar módulos shell, definir suas opções de histórico, alterar seu prompt, configurar o zle e a conclusão, etc. Você também define quaisquer variáveis que são usadas apenas no shell interativo (por exemplo$LS_COLORS
)..zlogin
é originada no início de um shell de login. Este arquivo é frequentemente usado para iniciar o X usandostartx
. Alguns sistemas iniciam o X na inicialização, portanto esse arquivo nem sempre é muito útil..zprofile
é basicamente o mesmo que.zlogin
exceto que é originada diretamente antes da.zshrc
origem, em vez de diretamente depois dela. De acordo com a documentação do zsh, ".zprofile
é uma alternativa ao` .zlogin 'para os fãs do ksh; os dois não devem ser usados juntos, embora isso certamente possa ser feito se desejado "..zlogout
às vezes é usado para limpar e redefinir o terminal.Você deve examinar os arquivos de configuração de usuários aleatórios do Github para ter uma idéia melhor do que cada arquivo deve conter.
fonte
man zshall
para obter detalhes).$PATH
em.zshenv
, vários outros arquivos todos são originados após este arquivo que irá substituir esse valor. Consulte zsh.org/mla/users/2003/msg00600.html .$LANG
e$LC_ALL
ir?.zshenv
→ [.zprofile
se logar] → [.zshrc
se interativo] → [.zlogin
se logar] → [.zlogout
às vezes].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 :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:
.zshrc
[Leia quando interativo]
Coloquei aqui tudo o necessário apenas para uso interativo :
.zlogin
[Leia no login]
Este arquivo é como
.zprofile
, mas é lido depois.zshrc
. Você pode considerar o shell totalmente configurado no tempo de execução .zloginEntã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
.zshenv
.zshenv
.zprofile
.zshrc
.zlogin
.zlogout
fonte
Não faça
ssh-agent
chamadas.zshenv
. Isso fez com que meuless
comando não exibisse mais nenhum arquivo de texto, provavelmente porque suas opções foram personalizadas pelo Prezto (export LESS='-F -g -i -M -R -S -w -X -z-4'
in.zprofile
).fonte