Cómo usar bash como shell predeterminado

21

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é pasó bajo el capó que la nueva versión se usa automáticamente.

Miguel
fuente
¿Cómo cerró / reabrió el shell actual?
user151019
@Mark haga clic derecho en el ícono de la terminal -> salga, haga clic izquierdo en el ícono de la terminal
Mike

Respuestas:

8

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

En cuanto a su pregunta echo $BASH_VERSIONle dirá la versión del shell actual . bash --versionte dice la versión del primer bash en tu $PATH. Entonces, la forma en que mirabas la versión no te decía la versión que estabas ejecutando.

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

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

# save and quit via kntrl + x

Ahora, necesitas 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 salga de Terminal y vuelva a abrirlo! Comprobar si todo está bien?

echo $BASH_VERSION # 4.3.42(1)-release
vigo
fuente
puede que no sea obvio que este mismo método también funciona para zshy fishshells.
Andy