Esclarecimento sobre: ​​arquivos de inicialização/desligamento ZSH

Esclarecimento sobre: ​​arquivos de inicialização/desligamento ZSH

Acabei de atualizar para o macOS Catalina e o novo shell é ZSH. Então, como é um novo começo, estou tentando configurar meu ambiente shell com aliases, funções, etc., como fiz no bash. Estou tentando descobrir o que vai para onde, quando me deparei com isso nodocumentação

Os comandos são então lidos em $ZDOTDIR/.zshenv. Se o shell for um shell de login, os comandos serão lidos /etc/zprofilee depois $ZDOTDIR/.zprofile. Então, se o shell for interativo, os comandos serão lidos /etc/zshrce então $ZDOTDIR/.zshrc. Finalmente, se o shell for um shell de login /etc/zlogine $ZDOTDIR/.zloginfor lido.

As partes confusas...

  • Se for um shell de login, ele lê /etc/zprofilee depois$ZDOTDIR/.zprofile
  • Finalmente, se o shell for um shell de login /etc/zlogine $ZDOTDIR/.zloginfor lido.

Se eu usar SSH no meu Mac, será um shell de login. Então, como preciso configurar isso, quais arquivos preciso (ou devo) modificar? Acho que para ajudar a responder a essa pergunta provavelmente ajudaria a entender a diferença entre .zprofilee. .zloginPortanto, qualquer orientação aqui seria incrível.

Responder1

Os *profilearquivos e os *loginarquivos são lidos sob as mesmas condições: se e somente se o shell for um shell de login (e não invocado com uma opção como no_rcs). O manual os lista separadamente porque são invocados em uma ordem diferente em relação aos *rcarquivos.

O nome *profilevem de sh, oConcha Bourne(dos quais ksh, bash, dash e outros são em sua maioria reimplementações com recursos extras). O nome *loginvem decsh. Zsh é mais parecido com sh, mas possui recursos de ambos, então acho que é por isso que suporta ambos os nomes.

Muitas vezes não importa se você usa *profileou *login. Mas *profileos arquivos têm a vantagem de serem lidos antes *rc, portanto, se você tiver *rcconteúdo que depende das configurações de *profile(por exemplo, se você .zshrcchamar um programa que está em um diretório .zprofileadicionado a $PATH), será necessário usar *profilee não *login.

Portanto, coloque a configuração do tempo de login (geralmente principalmente variáveis ​​de ambiente) em ~/.profile, e a configuração interativa (prompt, conclusão, atalhos de teclado, aliases,…) em ~/.zshrc. Você raramente precisará dos outros arquivos de inicialização.

informação relacionada