¿Cómo cambio de un shell desconocido a bash?

Me sorprendió no encontrar esta pregunta ya en el sitio. Entonces, hoy $ vino después de iniciar sesión como nuevo usuario. Esto fue inesperado porque el mensaje de mi usuario principal comienza con username@computername:~$.

Entonces, ¿cómo cambio de esto otro shell para bash?

Comentarios

  • Solo porque $ apareció en lugar de username@computername:~$ no ' significa que no fue ' t bash. El formato exacto del mensaje lo establece la variable PS1, que se puede configurar o personalizar de manera diferente para diferentes usuarios.
  • @mouche Re: @frabjous echo $SHELL para averiguar cuál es su shell actual.
  • @mouche @frabjous y comenzar con $ es en realidad común para bash, algunos shells que no son bash como zsh usan% fuera de la caja, creo que otros shells usan otras cosas.
  • @mouche siendo /bin/sh a menudo no ' no significa mucho que ' s suele ser un enlace simbólico a otra cosa. Yo ' d escribo ls -l /bin/sh para ver a qué ' es un enlace simbólico. En algunos casos, ser un enlace simbólico a algo cambia su comportamiento, no ' no creo que bash sea así.
  • @xenoterracide – Usando bash ya que /bin/sh deshabilita muchas funciones de bash (entra en el modo de cumplimiento POSIX).

Respuesta

Suponiendo que el shell desconocido admite la ejecución de un comando absoluto, puede intentar: /bin/bash

Para cambiar el shell predeterminado, usaría chsh(1). Ejemplo de uso: chsh -s /bin/bash $USER

Comentarios

  • ¿Chsh cambia permanentemente el shell o solo para la sesión actual? ?
  • @mouche Permanently; cambia su entrada en /etc/passwd
  • @mouche, chsh(1) solo permitirá cambiar a un shell que esté listado en /etc/shells (y está disponible, presumiblemente). chsh -l enumera las alternativas. Tenga cuidado, algunas (como nologin) están definidas para cuentas que nunca deben usarse para iniciar sesión (una buena forma de bloquearse), puede haber adiciones locales para usos especiales.

Respuesta

Escribe bash. Si desea que esto sea permanente, cambie el shell predeterminado a /bin/bash editando /etc/passwd.

Aquí «s algunos fragmentos de mi /etc/passwd:

avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin 

El último campo contiene el shell, modificando el campo después del último : a un shell válido o no válido funcionará. /bin/false y /sbin/nologin ambos se refieren al usuario no tiene un shell de inicio de sesión real, aunque si pam no está configurado correctamente, esto no significa que no puedan iniciar sesión (informé un error sobre esto en Arch Linux, porque puede iniciar sesión gráficamente sin tener un shell de inicio de sesión). /bin/bash y /bin/zsh son shells válidos; consulte /etc/shells para obtener una lista de shells válidos en sus sistemas. Aquí está mi /etc/shells si está interesado.

/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash 

Sí, puede usar chsh o usermod para hacer lo mismo, recuerde que estos son solo archivos de texto estructurados y TIMTOWTDI.

Comentarios

  • Probablemente quieras usar chsh en lugar de editar manualmente passwd
  • @Michael hay alrededor de 5 (POOMA) formas diferentes de cambiar el shell en /etc/passwd No ' tenía ganas de enumerar ninguna de ellas , porque siempre lo hago manualmente. chsh y usermod pueden hacerlo.
  • Jugar con los archivos de configuración es una mala idea (TM), un error podría inutilizar el sistema. Sí, a menudo es la única forma o la más rápida, pero hágalo con extremo cuidado .

Responder

Si chsh o la edición manual de la configuración no funciona, pero se ejecuta un script ~ / .profile al iniciar sesión, agregue esta línea:

exec /bin/bash --login 

Comentarios

  • Después de mirar alrededor por un tiempo, esta era la solución que necesitaba. ¡Gracias!
  • Gran idea, especialmente si el shell seleccionó las fuentes de ese archivo en el inicio …
  • touch ~/.bash_profile o de lo contrario, bash se ejecutará en un bucle: bash toma ~/.profile en caso de que ~/.bash_profile no ' no existe.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *