Come usare bash come shell predefinita


21

Sto eseguendo El Capitan 10.11.3 con bash versione 3.x quindi ho deciso di aggiornare bash tramite:

brew install bash

Brew posiziona il nuovo bash in / 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.

Come puoi vedere, menzioni di birra che devo aggiornare /etc/shellsper poter usare la nuova bash. Ma dopo aver chiuso / riaperto la shell corrente bash --versionmi dice che ora sto già usando 4.3.42, quindi mi chiedo cosa è successo sotto il cofano che la nuova versione viene utilizzata automaticamente?


Come hai chiuso / riaperto l'attuale shell?
user151019

@Mark fare clic con il tasto destro sull'icona del terminale -> esci, fare clic con il tasto sinistro del mouse sull'icona del terminale
Mike

Risposte:


8

Puoi usare il comando chsh per cambiare la tua shell. Nel tuo caso, con brew generato dalla birra, dovresti impostarlo su /usr/local/bin/bash. Dovresti anche inserirlo /etc/shells.

Quanto alla tua domanda echo $BASH_VERSIONti dirà la versione della shell corrente . bash --versionti dice la versione del primo bash nel tuo $PATH. Quindi il modo in cui stavi guardando la versione non ti stava dicendo la versione che stavi eseguendo.


Ok, penso di aver capito. Ma questo non significa che brew ha modificato il mio percorso e put / usr / local / bash in path? O è / usr / local / bash predefinito in PATH?
Mike,

Ok sudo stat -x /etc/pathsmi dice che non è stato modificato da brew (dovrai comunque sudo). Quindi deve essere predefinito. E penso che tu abbia ragione, dopo aver fatto i tuoi passi l'eco $ BASH_VERSION ora restituisce 4.3.42. Grazie a Merm!
Mike,

26
brew install bash
sudo nano /etc/shells

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

# save and quit via kntrl + x

Ora, devi vedere qualcosa del genere:

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!

Ora imposta la shell predefinita:

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

Ora esci da Terminal e riaprilo! Controlla se tutto va bene?

echo $BASH_VERSION # 4.3.42(1)-release

potrebbe non essere ovvio che questo stesso metodo funziona anche per zshe fishshell.
Andy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.