Como usar o bash como shell padrão

20

Estou executando o El Capitan 10.11.3 com o bash versão 3.x, por isso decidi atualizar o bash via:

brew install bash

O Brew coloca o novo bash em / 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 você pode ver, o brew menciona que eu preciso atualizar /etc/shellspara usar o novo bash. Mas, após fechar / reabrir, o shell atual bash --versionme diz que agora eu já estou usando o 4.3.42, então eu me pergunto o que aconteceu sob o capô que a nova versão é usada automaticamente?

Mike
fonte
Como você fechou / reabriu o shell atual?
user151019
@Mark clique com o botão direito no ícone do terminal -> sair, clique com o botão esquerdo no ícone do terminal #
Mike

Respostas:

8

Você pode usar o comando chsh para alterar seu shell. No seu caso, com o bash gerado pelo brew, você deve configurá-lo para /usr/local/bin/bash. Você também deve colocar isso /etc/shells.

Quanto à sua pergunta echo $BASH_VERSION, você verá a versão do shell atual . bash --versioninforma a versão da primeira festança no seu $PATH. Portanto, a maneira como você estava visualizando a versão não estava informando a versão em execução.

MERM
fonte
Ok, eu acho que entendo. Mas isso não significa que o brew modificou meu caminho e colocou / usr / local / bash to path? Ou é / usr / local / bash padrão no PATH?
Mike
Ok sudo stat -x /etc/pathsme diz que não foi modificado pelo brew (você precisará do sudo de qualquer maneira). Portanto, deve ser o padrão. E acho que você está certo, depois de executar seus passos, o eco de $ BASH_VERSION agora retorna 4.3.42. Obrigado Merm!
Mike
25
brew install bash
sudo nano /etc/shells

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

# save and quit via kntrl + x

Agora, você precisa ver algo assim:

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!

Agora defina seu shell padrão:

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

Agora saia do Terminal e abra-o novamente! Verifique se está tudo bem?

echo $BASH_VERSION # 4.3.42(1)-release
vigo
fonte
pode não ser óbvio este mesmo método também funciona para zshe fishconchas.
Andy Andy