Acabo de actualizar a macOS Catalina y el nuevo shell es ZSH. Entonces, dado que es un nuevo comienzo, estoy intentando configurar mi entorno de shell con alias, funciones, etc., como lo hice en bash. Estoy tratando de descubrir qué va y dónde, cuando me encontré con esto en eldocumentación
Luego se leen los comandos
$ZDOTDIR/.zshenv
. Si el shell es un shell de inicio de sesión, los comandos se leen desde/etc/zprofile
y luego$ZDOTDIR/.zprofile
. Luego, si el shell es interactivo, los comandos se leen desde/etc/zshrc
y luego$ZDOTDIR/.zshrc
. Finalmente, si el shell es un shell de inicio de sesión,/etc/zlogin
se$ZDOTDIR/.zlogin
leen.
Las partes confusas...
- Si es un shell de inicio de sesión, lee
/etc/zprofile
y luego$ZDOTDIR/.zprofile
- Finalmente, si el shell es un shell de inicio de sesión,
/etc/zlogin
se$ZDOTDIR/.zlogin
leen.
Si hago SSH a mi Mac, es un shell de inicio de sesión. Entonces, dado que necesito configurar eso, ¿qué archivos necesito (o debería) modificar? Supongo que para ayudar a responder esa pregunta probablemente sería útil comprender la diferencia entre .zprofile
y. .zlogin
Entonces, cualquier orientación aquí sería excelente.
Respuesta1
Los *profile
archivos y los *login
archivos se leen en las mismas condiciones: si y sólo si el shell es un shell de inicio de sesión (y no se invoca con una opción como no_rcs
). El manual los enumera por separado porque se invocan en un orden diferente en relación con los *rc
archivos.
El nombre *profile
proviene de sh
, elconcha de bourne(que ksh, bash, dash y otros son en su mayoría reimplementaciones con características adicionales). El nombre *login
proviene decsh. Zsh es más parecido a sh pero tiene características de ambos, así que supongo que por eso admite ambos nombres.
A menudo no importa si usas *profile
o *login
. Pero *profile
los archivos tienen la ventaja de que se leen antes *rc
, por lo que si tiene *rc
contenido que depende de la configuración de *profile
(por ejemplo, si .zshrc
llama a un programa que está en un directorio que .zprofile
se agrega a $PATH
), debe usar *profile
y no *login
.
Por lo tanto, coloque la configuración del momento de inicio de sesión (generalmente en su mayoría variables de entorno) en ~/.profile
y la configuración interactiva (mensaje, finalización, combinaciones de teclas, alias,…) en ~/.zshrc
. Rara vez necesitarás los otros archivos de inicio.