¿Cómo corrijo Terminal.app cuando mi shell se ha establecido en un valor ilegal?

1

Hoy estuve bromeando acerca de intentar desinstalar macports cuando noté que se producía un error cada vez que usaba sudo. Maté a Terminal y traté de reiniciarlo, lo cual falló con el mensaje de error "No estás autorizado para ejecutar esta aplicación" y "El administrador ha configurado tu shell en un valor ilegal" ¿Cómo puedo solucionar esto?

    
pregunta Jonathan Thomson 31.03.2012 - 23:10

5 respuestas

1

Si está recibiendo algunos mensajes de error extraños en las ventanas de su Terminal cuando se abren por primera vez, eso probablemente indica un problema con sus preferencias de Terminal. Intente eliminar (o simplemente renombrar) el archivo de preferencias de Terminal ( ~/Library/Preferences/com.apple.Terminal.plist ) y luego reinicie la aplicación de Terminal. (Source)

Si aún tiene un problema, mire lo que tiene en sus archivos de puntos de shell: ~/.bash_profile , ~/.bashrc , y similares. Si no puede averiguar cuál es el problema, intente eliminar (o simplemente cambiar el nombre) de esos archivos de puntos.

Otro lugar para buscar problemas es el archivo default.term bajo ~/Library/Application Support/Terminal . Este es el archivo que almacena la configuración predeterminada para las ventanas de Terminal.

Si todo eso falla, use la Utilidad de Discos para reparar los permisos de Terminal. (Source)

    
respondido por el Mathias Bynens 31.03.2012 - 23:14
2
  

... Ya resolví el problema usando la Utilidad de Discos para reparar permisos ...

Si la reparación de los permisos soluciona el problema, la causa es (casi con certeza) que los permisos de /etc/shells fueron incorrectos, lo que impide que la Terminal lo lea.

/etc/shells contiene una lista de programas de shell válidos, y Terminal comprueba si el shell para su cuenta de usuario está en la lista. Si no, produce el mensaje "shell ilegal". Si no puede leer el archivo /etc/shells debido a problemas de permisos, también produce este mensaje.

Más raramente, algunas personas se han encontrado con este problema cuando el archivo /etc/shells se modificó de manera que está vacío, en cuyo caso deberá restaurar su contenido copiándolo desde un buen sistema o con un Time Restauración de la máquina, etc.

Para responder a su pregunta original:

Si Terminal se queja de un "shell ilegal" significa que el shell de su cuenta de usuario no se encontró en /etc/shells .

Puede ver qué shells se consideran válidos con cat /etc/shells .

Puede verificar qué shell está configurada para usar su cuenta de usuario con echo $SHELL , o leyendo la información del usuario con dscl . -read "/Users/$LOGNAME" UserShell . O puedes usar Preferencias del sistema :

  1. Abra Preferencias del sistema y vaya a Usuarios & Grupos .
  2. Haga clic en el bloqueo e ingrese su contraseña para poder leer / configurar las configuraciones del usuario.
  3. Haz clic con la tecla Control presionada (o haz clic con el botón derecho) en tu usuario para obtener un menú contextual y elige Opciones avanzadas ... .

La hoja de Opciones avanzadas muestra información detallada de la cuenta de usuario, incluida la ruta del shell. También puede usar esto para editar la ruta de acceso del shell para volver a habilitar los inicios de sesión si se ha establecido en un valor que no aparece en /etc/shells .

    
respondido por el Chris Page 01.04.2012 - 12:56
1

Uso zsh, mientras que en la configuración no sé por qué $ SHELL está configurado en /usr/local/bin/zsh , luego lo cambié a /bin/zsh , problema resuelto . En mi caso, los permisos de reparación u otros enfoques anteriores no ayudaron. Pero, gracias de todos modos.

    
respondido por el Jing Li 20.03.2013 - 12:03
0

Para mí, también recibí este error debido a un error tipográfico de chsh. Uso homebrew y (muy estúpidamente) configuro mi shell en el binario en / usr / local / Cellar en lugar del enlace dinámico en / usr / local / bin. Como resultado, la Terminal amordazó, pero sorprendentemente, iTerm no lo hizo. Este hilo fue muy útil para solucionar mi problema.

Para evitar el problema mi : si utiliza homebrew, SIEMPRE haga referencia a los binarios enlazados dinámicamente en / usr / local / bin, ya que siempre se mantendrán actualizados.

    
respondido por el SeniorSmoke 09.12.2012 - 23:36
0

Obtuve el mismo error después de ejecutar chsh e hice un error tipográfico en la ruta para el shell de inicio de sesión.

No pude abrir Terminal, y no sucedió nada cuando intenté mostrar la hoja de opciones avanzadas en Usuarios & Panel de preferencias de grupos. Sin embargo, pude ejecutar chsh -s /bin/bash en iTerm 2 .

También puede cambiar el shell de inicio de sesión predeterminado con dscl o editar /var/db/dslocal/nodes/Default/users/$USER.plist directamente.

    
respondido por el user495470 11.07.2012 - 08:05

Lea otras preguntas en las etiquetas