Al iniciar un terminal en iTerm 2, mi .zshrc se ejecuta dos veces. ¿Es posible que tenga algo que ver con el "último inicio de sesión" impreso por iTerm en la parte superior del terminal? Alguien sabe como arreglar esto?
Ejemplo de salida, nueva terminal:
last login: Wed Mar 4 12:55:35 on ttys000 The mark of a good party is that you wake up the next morning wanting to change your name and start a new life in different city. -- Vance Bourjaily, "Esquire" You never know what is enough until you know what is more than enough. -- William Blake ~ ❯❯❯ zsh Oh, love is real enough, you will find it some day, but it has one arch-enemy -- and that is life. -- Jean Anouilh, "Ardele" ~ ❯❯❯
Como puede ver, cuando se abre iTerm fortune (en mi .zshrc) se ejecuta dos veces, pero cuando se inicia un nuevo shell con el terminal ya abierto, se ejecuta correctamente una vez. ¿Alguna forma de arreglar este comportamiento?
Respuestas:
Gran parte de esto depende de la configuración que haya realizado en ITerm y de la configuración de shells.
Por defecto, iTerm ejecuta el shell en / etc / passwd como un shell de inicio de sesión. Por defecto, el shell es bash pero el usuario lo cambió a zsh
zsh tiene varios archivos que se utilizan en el inicio ver manual de zsh $ ZDOTDIR es por defecto su directorio de inicio
Por lo tanto, cuando los elementos inician un shell de inicio de sesión (y suponen que no hay archivos globales en / tc), se obtienen los siguientes archivos
Si zsh se inicia desde un indicador de shell, no es un shell de inicio de sesión y, por lo tanto, solo se lee lo siguiente
Si tiene un comportamiento diferente en los dos casos, mire su ~ / .zprofile y ~ / .zlogin.
En este caso, uno de ellos probablemente sea sourcing ~ / .zshrc. Tenga en cuenta que esto difiere de bash donde un shell de inicio de sesión lee ~ / .bash_profile y un shell no de inicio de sesión lee ~ / .bash_profile y este es el uso normal de bash para obtener la fuente ~ / .bashrc en ~ /, bash_profile, así que para que no sea necesario duplicar código.
fuente