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
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 (comonologin
) 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 manualmentepasswd
- @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.
$
apareció en lugar deusername@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.echo $SHELL
para averiguar cuál es su shell actual./bin/sh
a menudo no ' no significa mucho que ' s suele ser un enlace simbólico a otra cosa. Yo ' d escribols -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í.bash
ya que/bin/sh
deshabilita muchas funciones de bash (entra en el modo de cumplimiento POSIX).