Cómo usar bash como shell predeterminado

Estoy ejecutando El Capitan 10.11.3 con bash versión 3.x, así que decidí actualizar bash a través de:

brew install bash

Brew coloca el nuevo bash en /usr/local/Cellar/bash:

brew info bash

bash: stable 4.3.42 (bottled), devel 4.4-beta, HEAD
Bourne-Again SHell, a UNIX command interpreter
https://www.gnu.org/software/bash/
/usr/local/Cellar/bash/4.3.42 (59 files, 7.3M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/bash.rb
==> Dependencies
Required: readline ✔
==> Caveats
In order to use this build of bash as your login shell,
it must be added to /etc/shells.

Como puede ver, Brew menciona que necesito actualizar /etc/shellspara usar el nuevo bash. Pero después de cerrar/reabrir el shell actual, bash --versionme dice que ahora ya estoy usando 4.3.42, así que me pregunto qué sucedió bajo el capó de que la nueva versión se usa automáticamente.

¿Cómo cerraste/volviste a abrir el shell actual?
@Mark haga clic con el botón derecho en el icono de la terminal -> salir, haga clic con el botón izquierdo en el icono de la terminal

Respuestas (2)

Puede usar el comando chsh para cambiar su shell. En su caso, con bash generado por cerveza, debe establecerlo en /usr/local/bin/bash. También deberías poner esto /etc/shells.

En cuanto a su pregunta echo $BASH_VERSION, le indicará la versión del shell actual . bash --versionle dice la versión del primer bash en su archivo $PATH. Entonces, la forma en que miraba la versión no le decía la versión que estaba ejecutando.

Vale, creo que entiendo. ¿Pero eso no significa que brew modificó mi ruta y puso /usr/local/bash en la ruta? ¿O es /usr/local/bash predeterminado en PATH?
Ok sudo stat -x /etc/pathsme dice que no fue modificado por brew (necesitará sudo de todos modos). Así que debe ser por defecto. Y creo que tienes razón, después de hacer tus pasos echo $BASH_VERSION ahora devuelve 4.3.42. Gracias Merm!
brew install bash
sudo nano /etc/shells

# add to last line
/usr/local/bin/bash

# save and quit via kntrl + x

Ahora, usted necesita ver algo como esto:

cat /etc/shells

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash  # we added this!

Ahora configure su shell predeterminado:

chsh -s /usr/local/bin/bash $USER # this will set for the current user.

¡Ahora sal de la Terminal y vuelve a abrirla! Comprobar si todo bien?

echo $BASH_VERSION # 4.3.42(1)-release
Puede que no sea obvio que este mismo método también funciona para zshshells fish.