¿Cómo hago para que Bash sea mi shell predeterminado en Ubuntu?


101

Tengo un .bash_profileen mi directorio de inicio, pero no se ejecuta al iniciar sesión. Si hago lo siguiente, las cosas parecen ser como esperaba:

ssh myhost
bash
source ~/.bash_profile

Pero normalmente todo eso ocurre al iniciar sesión. Pensamientos?


3
También asegúrese de no tener un ~/.profileo ~/.bash_login, ya que solo uno de los tres tiene su origen. (Olvidé el orden exacto)
Grawity

3
¿Por qué tienes una pregunta diferente en el título y una diferente en el cuerpo de tu publicación?
pabouk

Respuestas:


170

Utilizar:

chsh

Ingrese su contraseña e indique la ruta al shell que desea usar.

Para Bash eso sería /bin/bash. Para Zsh eso sería /usr/bin/zsh.


15
+1: no estoy seguro de por qué el OP decidió que editar el archivo de contraseña era una mejor opción, pero esta es la mejor respuesta
kdgregory

1
Sí, vencerme, esta es la forma estándar.
John T

1
Y en ubuntu, la ruta al shell que desea usar es ... / bin / bash (y / bin / sh no es lo mismo)
Harry Wood

49
O puede usarsudo chsh -s /bin/bash username
Oleg Vaskevich

77
Debe cerrar sesión y volver a iniciarla para ver este cambio.
Neil Traft

37

Además de la respuesta de akira, también puede editar su archivo / etc / passwd para especificar su shell predeterminado.

Encontrará una línea como este ejemplo:

john:x:1000:1000:john,,,:/home/john:/bin/sh

El shell se especifica al final.


8
Es mejor usar el comando 'chsh' como lo sugiere akira: menos posibilidades de arruinar algo por error.
Lars Haugseth

55
sin mencionar que 'chsh' está disponible cuando no puede escribir en / etc / passwd
quack quixote

1
Pero si tiene acceso a la modificación /etc/passwdy tiene cuidado, la respuesta de John es hacer un buen uso de las herramientas que proporciona el sistema.
AJP

3
Debe cerrar sesión y volver a iniciarla para ver este cambio.
Neil Traft

2
Si está ejecutando un servidor sin contraseñas de usuario, proporcionando acceso solo a través de claves ssh públicas / privadas ... también tiene mucho sentido. chsh requiere una contraseña.
Keith John Hutchison

4

Puede verificar su programa de terminal. Puede estar configurado para ejecutar / bin / sh en lugar de / bin / bash

Bash ejecuta .bash_profile solo para sesiones de inicio de sesión. .bashrc se ejecuta para todas las sesiones de bash, no solo para las sesiones de inicio de sesión. Intente obtener .bash_profile de .bashrc (¡evite la dependencia circular!) O configure su programa de terminal para ejecutar / bin / bash -l como un programa de shell.


2
El programa de terminal no tiene nada que ver con el problema porque es el sshd en la máquina remota, que genera el nuevo shell.
akira

3

Habilitar bash:

$ /bin/bash

Cambiar shell para el usuario:

$ sudo usermod -s /bin/bash username

dónde:

  -s, --shell SHELL             new login shell for the user account

2
(1) ¿Qué quiere decir con "habilitar bash"? (2) El usuario quiere cambiar su propio shell de inicio de sesión en un sistema remoto. ¿Por qué supone que tiene sudoacceso a ese sistema? ¿Por qué proporciona instrucciones en términos de cambiar el shell de inicio de sesión de otro usuario?
G-Man el

Usar chsh (como se sugirió anteriormente) no funcionó para mí. Este comando lo hizo!
Por Lindberg

2

Una alternativa es cambiar el nombre de su script de inicio a .profile. Este archivo está siendo fuente por la mayoría de los shells Unix .


1

Para hacer que cualquier shell sea su predeterminado, primero verifique que esté instalado y reconocido en su computadora mirando el contenido de /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

Luego use chshpara cambiar su caparazón:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

Referencias

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh

0

No hay suficiente información en su pregunta para que yo pueda decir con seguridad, pero he encontrado el mismo problema antes. Suponiendo que ya haya configurado / bin / bash en su entrada de contraseña, puede ser la forma en que se inicia su terminal.

Si está intentando iniciar un terminal GUI, supongamos gnome-terminalque puede estar esperando que el shell lea sus archivos de inicio de bash. Sin embargo, esto no sucede en Ubuntu y quizás en otros sistemas por defecto.

La forma en que lo arreglé en Ubuntu es editar las preferencias de gnome-terminal y configurar el comando de inicio para que sea bash -l. -les la abreviatura de --login. Esto le dice a bash que se inicie como un shell de inicio de sesión, lo que hace que cargue los scripts de inicio como lo hace cuando inicia sesión a través de ssh.

Estoy seguro de que hay una buena razón para que esto sea así, pero me pareció sorprendente y un poco más que molesto, ya que comparto los mismos perfiles en los sistemas Linux, Cywgin y Macos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.