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?
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.
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.
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
来源:https://stackoverflow.com/questions/791227/unable-to-update-my-bash-in-mac-by-macports