无法通过MacPorts在Mac中更新我的Bash

我更新了我的Bash到MacPorts的3.2.48失败。

看来我没有积极性,因为我得到了

echo $BASH_VERSION 3.2.17(1)-release 

你怎么能使最新的Bash活动 ,以便我得到它的login壳?

运行以下代码,例如将您的shell更改为由MacPorts安装的最新的Bash

 chsh -s /opt/local/bin/bash 

如果这给你的信息,

non-standard shell

你将需要添加

 /opt/local/bin/bash 

 /etc/shells 

请注意, /etc/shells只是一个文本文件,所以如果您以root身份进行身份validation,则可以直接对其进行编辑。 您可以通过命令以编程方式更改它

 sudo -s Password: # echo /opt/local/bin/bash >> /etc/shells 

如果您的第一个chsh命令失败,那么现在再运行一次,如果您设法更改上述文件。

我猜它已经安装了,但并没有被用作你的loginshell。

您可以在命令行上使用dscl来更改shell。

在dscl提示符处input以下内容:

 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 

如果有帮助,我还有另一个dscl在我的博客上使用的例子。

您可以使用以下shell脚本,将您的loginshell从现有的Mac OS Xloginshell(默认情况下为Mac OS X附带的/bin/bash )切换到MacPorts /opt/local/bin/bash

 #!/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