zshell ohmyzsh mac instalar change awesome antergos macos shell zsh

macos - ohmyzsh - zsh themes linux



¿Dónde colocar las aserciones variables de $ PATH en zsh? (3)

Me encanta zsh , pero no estoy seguro de dónde colocar mi $PATH y otras aserciones variables. Encuentro que están dispersos entre los archivos .zshrc .zprofile .bashrc .bash_profile , y a veces se duplican.

Me doy cuenta de que tener algo dentro de los archivos bash no tiene mucho sentido ya que estoy usando zsh , pero ¿ dónde exactamente debería colocar mis rvm , python , node etc a mi $PATH ?

¿Existe un archivo específico que debería usar (es decir, .zshenv que no existe actualmente en mi instalación), uno de los que estoy usando actualmente, o incluso importa?


Aquí están los documentos de las páginas man de zsh en la sección ARRANQUE / ARRANQUE DE ARCHIVOS.

Commands are first read from /etc/zshenv this cannot be overridden. Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the former affects all startup files, while the second only affects global startup files (those shown here with an path starting with a /). If one of the options is unset at any point, any subsequent startup file(s) of the corresponding type will not be read. It is also possi- ble for a file in $ZDOTDIR to re-enable GLOBAL_RCS. Both RCS and GLOBAL_RCS are set by default. Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zpro- file. Then, if the shell is interactive, commands are read from /etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the shell is a login shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.

De esto podemos ver que los archivos de orden que se leen son:

/etc/zshenv # Read for every shell ~/.zshenv # Read for every shell except ones started with -f /etc/zprofile # Global config for login shells, read before zshrc ~/.zprofile # User config for login shells /etc/zshrc # Global config for interactive shells ~/.zshrc # User config for interactive shells /etc/zlogin # Global config for login shells, read after zshrc ~/.zlogin # User config for login shells ~/.zlogout # User config for login shells, read upon logout /etc/zlogout # Global config for login shells, read after user logout file

Puede obtener más información here .


Tuve un problema similar (en el comando de terminal bash estaba funcionando correctamente pero zsh mostró error de comando no encontrado)

Solución:


simplemente pega lo que estuviste pegando antes en ~ / .bashrc para:

~/.zshrc


tl; versión dr: use ~/.zshrc

Y lea la página del manual para entender las diferencias entre:

~/.zshrc , ~/.zshenv y ~/.zprofile .

En cuanto a mi comentario

En mi comentario adjunto a la respuesta que dio kev , dije:

Esto parece ser incorrecto - / etc / profile no aparece en ninguna documentación de zsh que pueda encontrar.

Esto resulta ser parcialmente incorrecto: /etc/profile puede ser originado por zsh . Sin embargo , esto solo ocurre si zsh se "invoca como sh o ksh "; en estos modos de compatibilidad:

Los scripts de inicio / apagado de zsh habituales no se ejecutan. Inicie sesión shells source / etc / profile seguido de $ HOME / .profile. Si la variable de entorno ENV se establece en la invocación, $ ENV se obtiene después de las secuencias de comandos 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 interpretarse como un nombre de ruta. [ man zshall, "Compatibilidad" ].

El enlace de ArchWiki ZSH dice:

Al iniciar sesión, Zsh obtiene los siguientes archivos en este orden:
/ etc / profile
Este archivo es originado por todos los shells compatibles con Bourne al iniciar sesión

Esto implica que /etc/profile siempre es leído por zsh al iniciar sesión - No tengo ninguna experiencia con el proyecto Arch Linux; el wiki puede ser correcto para esa distribución, pero generalmente no es correcto. La información es incorrecta en comparación con las páginas del manual zsh, y no parece aplicarse a zsh en OS X (las rutas en $PATH establecidas en /etc/profile no llegan a mis sesiones zsh).


Para abordar la pregunta:

¿Dónde exactamente debería colocar mis adiciones de rvm, python, node etc a mi $ PATH?

En general, exportaría mi $PATH desde ~/.zshrc , pero vale la pena leer la página man de zshall , específicamente la sección "ARCHIVOS ~/.zshrc " - ~/.zshrc se lee para shells interactivos , que pueden o pueden ser no se ajusta a sus necesidades: si desea $PATH para cada shell zsh invocada por usted (tanto interactive como no, tanto para login como para no, etc.), entonces ~/.zshenv es una mejor opción.

¿Existe un archivo específico que debería usar (es decir, .zshenv, que no existe actualmente en mi instalación), uno de los que estoy usando actualmente, o incluso importa?

Hay una gran cantidad de archivos leídos al inicio (revise las páginas man ), y hay una razón para eso: cada archivo tiene su lugar particular (configuraciones para cada usuario, configuraciones para usuarios específicos, configuraciones para shell de inicio de sesión, configuraciones para cada shell , etc.)
No se preocupe si ~/.zshenv no existe - si lo necesita, ~/.zshenv y lo leerá.

.bashrc y .bash_profile no son leídos por zsh , a menos que los fuente explícitamente desde ~/.zshrc o similar; la sintaxis entre bash y zsh no siempre es compatible. Tanto .bashrc como .bash_profile están diseñados para configuraciones de bash , no de zsh .