无法通过MacPorts更新Mac中的Bash

时间:2009-04-26 17:18:33

标签: macos bash macports

我通过MacPorts将我的Bash更新为3.2.48失败。

似乎我没有活动,因为我得到了

echo $BASH_VERSION
3.2.17(1)-release

如何让最新的Bash活跃,以便我为登录shell获取它?

3 个答案:

答案 0 :(得分:74)

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

chsh -s /opt/local/bin/bash

如果能给你留言,

  

non-standard shell

您需要添加

/opt/local/bin/bash

/etc/shells

请注意,/etc/shells只是一个文本文件,因此如果您以root身份进行身份验证,则可以直接编辑它。您可以通过命令

以编程方式对其进行更改
sudo -s
Password:
# echo /opt/local/bin/bash >> /etc/shells

如果您的第一个chsh命令失败,如果您设法更改了上述文件,请立即再次运行它。

答案 1 :(得分:2)

我猜它已安装但未被用作登录shell。

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

在dscl提示符下键入以下内容:

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

如果有帮助的话,我在我的blog上有另一个dscl使用示例。

答案 2 :(得分:2)

您可以使用以下shell脚本将登录shell从现有的Mac OS X登录shell(默认为Mac OS X附带的/bin/bash)切换到MacPorts /opt/local/bin/bash: / p>

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