Orden de ejecución y propósito de .profile vs .zshrc

3

Pocas preguntas:

  • ¿Cuál es un propósito distinto de .profile y .zshrc?
  • ¿Cómo se llama primero cuando el caparazón cobra vida?
JAM
fuente

Respuestas:

6

~/.profile solo se carga cuando se ejecuta zsh en sh modo de compatibilidad, de lo contrario se lee .zprofile, tanto como .zshrc para interactivo y .zlogin para shells de inicio de sesión.

Su propósito se desarrolla a partir de cuando están cargados. Como .zshrc se carga para shells interactivos, establece los alias, etc. que esperas en tales casos allí.

.profile también tiene la propiedad adicional de que está cargado por varios shells (por ejemplo, bash, a menos que encuentre algo más específico; o ksh ) de una forma u otra, para que pueda almacenar la configuración de múltiples shells en este archivo.

Extractos relevantes de man zshall, énfasis mío:

ARCHIVOS DE INICIO / APAGADO
Los comandos se leen primero desde /etc/zshenv; [...]

Los comandos se leen desde $ZDOTDIR/.zshenv. Si el shell es un shell de inicio de sesión, los comandos se leen desde /etc/zprofile y entonces $ZDOTDIR/.zprofile. Luego, si el shell es interactivo, los comandos se leen desde /etc/zshrc y entonces $ZDOTDIR/.zshrc. Por último, si el shell es un shell de inicio de sesión, /etc/zlogin y $ZDOTDIR/.zlogin se leen

COMPATIBILIDAD
Zsh intenta emular sh o ksh cuando se invoca como sh o ksh respectivamente; [...]

No se ejecutan los scripts habituales de inicio / apagado de zsh . Inicio de sesión shells source /etc/profile seguido por $HOME/.profile. Si la variable de entorno ENV se establece en la invocación, $ENV se obtiene después de los scripts de perfil. El valor de ENV está sujeto a la expansión de parámetros, la sustitución de comandos y la expansión aritmética antes de ser interpretado como una ruta de acceso. Tenga en cuenta que la opción PRIVILEGIADA también afecta la ejecución de los archivos de inicio.

Daniel Beck
fuente
1
//, ¿Estarías dispuesto a agregar un ejemplo? Diga que tanto .profile como .zprofile están presentes, pero zsh se está ejecutando en modo de compatibilidad.
Nathan Basanese