2009-08-14 15 views
126

Cuando zsh se establece como un shell de inicio de sesión en Mac OS X, cuando iTerm lo inicia, zsh no considera que se esté ejecutando como un shell de inicio de sesión, aunque se inicia como '-zsh' ('-' se pone como el primer carácter de arg [0]) que se supone que significa que debe comenzar como un shell de inicio de sesión.¿Cómo hacer que zsh se ejecute como un shell de inicio de sesión en Mac OS X (en iTerm)?

Entonces, cuando configuro el shell de inicio de sesión para bash, bash reconoce este primero '-' en $ 0 y se ejecuta como un shell de inicio de sesión, pero zsh no lo hace, aunque parece que debería.

¿Hay alguna manera de hacer que zsh reconozca el '-' en el arg [0], o hacer que iTerm ejecute el shell con un argumento de línea de comando -login?

Respuesta

19

¿Ha intentado editar la entrada del shell en account settings.

Vaya a Preferencias de cuentas, desbloquee y haga clic con el botón derecho en su cuenta de usuario para el cuadro de diálogo Configuración avanzada Configuración avanzada. Su shell debe ser/bin/zsh, y puede editar esa invocación de forma apropiada (es decir, agregue el argumento --login).

+0

por desgracia, eso no funciona: puedo establecer lo que me gusta usar la cáscara chsh (siempre y cuando tengo esta concha listada en/etc/shells) Sin embargo, no se pueden agregar argumentos de línea de comando al shell, el diálogo de preferencias avanzadas (iTerm falla al iniciar el shell). –

+0

Parte de la sintaxis ha cambiado en OS X, pero lo esencial es configurar el shell predeterminado para que sea/bin/zsh, ya que Brian indica más arriba – engineerDave

+6

I love SO. ¡He usado esta respuesta justo ahora, y solo entonces me di cuenta de que la escribí hace casi 4 años! –

200
chsh -s $(which zsh) 

se le pedirá la contraseña, pero una vez actualizada la configuración, cualquier nuevo iterm/sesiones de Terminal de empezar en esa máquina tomaría el valor zsh.

+1

Por favor, lea la pregunta primero. El problema no está en establecer el shell predeterminado, el problema es que zsh no está detectando que se inició como un shell de inicio de sesión. –

+1

Ah, mis disculpas. ¿Has intentado usar la bandera -i para forzar que zsh comience en modo interactivo? –

+11

Su respuesta hace que zsh se ejecute como un shell de inicio de sesión en Mac OS X en iTerm. Simplemente no se trata de hacerlo de la forma en que describes tratar de hacerlo. Pero resuelve el problema que usted cuestiona (en el título, en lugar de en el cuerpo). La pregunta que terminas en el cuerpo es una pregunta completamente diferente. Si esa es su verdadera pregunta (en lugar de cómo hacer que zsh se ejecute como shell de inicio de sesión), entonces quizás deba volver a escribir la pregunta en el título. – iconoclast

89

En iTerm -> Preferencias -> pestaña Perfiles -> sección General conjunto de comandos a:/bin/zsh --login

/bin/zsh --login

+1

iterm2 no parece tener esta opción en la pestaña General. ¿Alguna idea de cómo lograrlo en iterm2 sin cambiar el shell de inicio de sesión? –

+5

Es una pestaña general en la pestaña Perfiles. –

+0

Aha! Es confuso que haya tanto una Pestaña General como una Perfiles> General. –

1

Use la utilidad login para crear un shell de entrada. Suponga que el usuario que desea iniciar sesión tiene el nombre de usuario Alice y que zsh está instalado en /opt/local/bin/zsh (por ejemplo, una versión más reciente instalada a través de MacPorts). En iTerm 2, vaya a Preferencias, Perfiles, seleccione el perfil que desea configurar, y entran en Comando:

login -pfq Alice /opt/local/bin/zsh 

Ver man login para más detalles sobre las opciones.

50

Ir a los Usuarios & Grupos panel de los Preferencias del Sistema -> Seleccione el usuario ->clic en el candado para realizar cambios (esquina inferior izquierda) -> clic derecho en el usuario actual seleccionar opciones avanzadas ... -> Seleccione el Shell de entrada :/bin/zsh y OK

+2

Esto me salvó el día. Estoy en Osx Mavericks. – qed

+0

Éste trabajó sin problemas. Gracias ... –

14

El comando para cambiar el shell al inicio es chsh -s <path_to_shell>.Las conchas por defecto en Mac OS X se instalan dentro del directorio bin por lo que si desea cambiar el valor por defecto a zsh entonces se utilizaría el siguiente

chsh -s /bin/zsh 

Si está utilizando versión diferente de zsh entonces es posible que tenga que agregue esa versión al /etc/shells para evitar el mensaje de shell no estándar. Por ejemplo, si desea la versión de cerveza casera de zsh entonces usted tiene que añadir /usr/local/bin/zsh en el fichero antes mencionado que se puede hacer en un solo comando sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" y luego ejecutar

chsh -s /usr/local/bin/zsh 

O si usted quiere hacer todo esto en una sola comando simplemente copia y pega este si tiene zsh ya instalados

sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh 
+1

No creo que fuera justo desestimar esta respuesta. Props, ya que es el único que menciona '/ etc/shells' en el cuerpo de la respuesta en sí. – heymatthew

Cuestiones relacionadas