Reputation: 141220
I updated unsuccessfully my Bash to 3.2.48 by MacPorts.
It seems that I do not have it active, since I get
echo $BASH_VERSION
3.2.17(1)-release
How can you make the newest Bash active such that I get it for my login shell?
Upvotes: 38
Views: 15904
Reputation: 2971
You can switch your login shell, from your existing Mac OS X login shell (by default its /bin/bash
shipped with Mac OS X), to MacPorts /opt/local/bin/bash
just by using the following shell script:
#!/opt/local/bin/bash
if [ `grep /opt/local/bin/bash /etc/shells` ];
then
echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash;
else
echo /opt/local/bin/bash | sudo tee -a /etc/shells;
chsh -s /opt/local/bin/bash;
fi
Upvotes: 2
Reputation: 44321
Run the following code, for instance to change your shell to the newest Bash installed by MacPorts
chsh -s /opt/local/bin/bash
If that gives you the message,
"
non-standard shell
"
you will need to add
/opt/local/bin/bash
to
/etc/shells
Note that /etc/shells
is just a text file, so you can edit it directly if you authenticate as root. You can programmatically change it by the command
sudo -s
Password:
# echo /opt/local/bin/bash >> /etc/shells
If your first chsh command failed, run it now again if you managed to change the above file.
Upvotes: 75
Reputation: 644
I'm guessing it's installed but not being used as your login shell.
You can change the shell using dscl on the command line.
At the dscl prompt type the following:
list Local/Default/Users
read Local/Default/Users/<your username here>
change Local/Default/Users/<your username here> UserShell /bin/bash /opt/local/bin/bash
I have another example of dscl use on my blog if it helps.
Upvotes: 2