¿Qué debería / no debería ir en .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


133

Estoy buscando pautas sobre lo que uno debe y no debe incluir en los diversos archivos de inicio zsh.

Entiendo el orden de abastecimiento de estos archivos y las condiciones bajo las cuales se obtienen, pero aún no me queda claro qué debe incluir cada uno.


Respuestas:


156

Aquí hay una lista no exclusiva de lo que cada archivo tiende a contener:

  • Como .zshenvsiempre se obtiene, a menudo contiene variables exportadas que deberían estar disponibles para otros programas. Por ejemplo, $PATH, $EDITOR, y $PAGERse fijan a menudo en .zshenv. Además, se puede establecer $ZDOTDIRen .zshenvpara especificar una ubicación alternativa para el resto de la configuración zsh.
  • .zshrces para la configuración de shell interactivo. Establece opciones para el shell interactivo allí con los comandos setopty unsetopt. También puede cargar módulos de shell, configurar sus opciones de historial, cambiar su solicitud, configurar zle y finalización, etc. También establece las variables que solo se utilizan en el shell interactivo (por ejemplo $LS_COLORS).
  • .zloginse origina en el inicio de un shell de inicio de sesión. Este archivo se usa a menudo para iniciar X usando startx. Algunos sistemas inician X en el arranque, por lo que este archivo no siempre es muy útil.
  • .zprofilees básicamente lo mismo, .zloginexcepto que se obtiene directamente antes de .zshrcobtenerlo en lugar de hacerlo directamente después. De acuerdo con la documentación de zsh, " .zprofilese entiende como una alternativa a '.zlogin' para los fanáticos de ksh; los dos no están diseñados para usarse juntos, aunque esto ciertamente podría hacerse si se desea".
  • .zlogout a veces se usa para borrar y restablecer el terminal.

Debe revisar los archivos de configuración de los usuarios aleatorios de Github para tener una mejor idea de lo que debe contener cada archivo.


3
Solo como un punto de claridad, .zlogin se obtiene después de .zshrc (ver man zshallpara más detalles).
Aaron

8
Tenga en cuenta al establecer $PATHen .zshenv, varios otros archivos todos son de origen después de este archivo que va a reemplazar este valor. Consulte zsh.org/mla/users/2003/msg00600.html .
Beau Barker

¿Dónde debe $LANGy $LC_ALLir?
Lenar Hoyt

24
Solo para mis propias notas / confirmación y para ayudar a cualquier otra persona, el orden final es .zshenv→ [ .zprofilesi inicio de sesión] → [ .zshrcsi es interactivo] → [ .zloginsi inicio de sesión] → [a .zlogoutveces].
Gabriel L.

24

Aquí una lista de lo que cada archivo debe / no debe contener, en mi opinión:

.zshenv

[Leer cada vez]

Este archivo siempre tiene su origen, por lo que debe establecer variables de entorno que deben actualizarse con frecuencia . PATH (o su ruta de contraparte asociada ) es un buen ejemplo porque probablemente no desee reiniciar toda su sesión para que se actualice. Al configurarlo en ese archivo, reabrir un emulador de terminal iniciará una nueva instancia de Zsh con el valor PATH actualizado.

Pero tenga en cuenta que este archivo se lee incluso cuando se inicia Zsh para ejecutar un solo comando (con la opción -c ), incluso mediante otra herramienta como make. Debe tener mucho cuidado de no modificar el comportamiento predeterminado de los comandos estándar, ya que puede romper algunas herramientas (estableciendo alias, por ejemplo).

.zprofile

[Leer al iniciar sesión]

Personalmente trato ese archivo como .zshenvpero para comandos y variables que deben configurarse una vez o que no necesitan actualizarse con frecuencia :

  • variables de entorno para configurar herramientas (marcas para compilación, ubicación de la carpeta de datos, etc.)
  • configuración que ejecuta comandos (como SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))") ya que puede llevar un tiempo ejecutarlos.

Si modifica este archivo, puede aplicar las actualizaciones de configuración ejecutando un shell de inicio de sesión:

exec zsh --login

.zshrc

[Leer cuando interactivo]

Puse aquí todo lo necesario solo para uso interactivo :

  • rápido,
  • finalización del comando,
  • corrección de comando,
  • sugerencia de comando,
  • resaltado de comandos,
  • coloración de salida,
  • alias,
  • atajos de teclado,
  • comandos de gestión del historial,
  • otras herramientas interactivas diversas (auto_cd, manydots-magic) ...

.zlogin

[Leer al iniciar sesión]

Este archivo es similar .zprofile, pero se lee después .zshrc. Puede considerar que el shell esté completamente configurado en tiempo de ejecución .zlogin

Por lo tanto, lo uso para iniciar comandos externos que no modifican los comportamientos del shell (por ejemplo, un administrador de inicio de sesión).

.zlogout

[Leer al cerrar sesión] [Dentro del shell de inicio de sesión]

Aquí, puede borrar su terminal o cualquier otro recurso que se configuró al iniciar sesión.

Cómo elijo dónde poner una configuración

  • si lo necesita un comando ejecutado de forma no interactiva :.zshenv
  • si debe actualizarse en cada nuevo shell :.zshenv
  • si ejecuta un comando que puede tardar un tiempo en completarse :.zprofile
  • si está relacionado con el uso interactivo :.zshrc
  • si es un comando que se ejecutará cuando el shell esté completamente configurado :.zlogin
  • si libera un recurso adquirido al iniciar sesión:.zlogout

0

No pongas ssh-agentllamadas .zshenv. lessHizo que mi comando ya no mostrara ningún archivo de texto, probablemente porque Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile) personalizó sus opciones .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.