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/zprofile
e depois$ZDOTDIR/.zprofile
. Então, se o shell for interativo, os comandos serão lidos/etc/zshrc
e então$ZDOTDIR/.zshrc
. Finalmente, se o shell for um shell de login/etc/zlogin
e$ZDOTDIR/.zlogin
for lido.
As partes confusas...
- Se for um shell de login, ele lê
/etc/zprofile
e depois$ZDOTDIR/.zprofile
- Finalmente, se o shell for um shell de login
/etc/zlogin
e$ZDOTDIR/.zlogin
for 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 .zprofile
e. .zlogin
Portanto, qualquer orientação aqui seria incrível.
Responder1
Os *profile
arquivos e os *login
arquivos 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 *rc
arquivos.
O nome *profile
vem de sh
, oConcha Bourne(dos quais ksh, bash, dash e outros são em sua maioria reimplementações com recursos extras). O nome *login
vem 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 *profile
ou *login
. Mas *profile
os arquivos têm a vantagem de serem lidos antes *rc
, portanto, se você tiver *rc
conteúdo que depende das configurações de *profile
(por exemplo, se você .zshrc
chamar um programa que está em um diretório .zprofile
adicionado a $PATH
), será necessário usar *profile
e 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.