2009-04-26 40 views
36

我没有成功的MacPorts我的Bash更新到3.2.48更新我在Mac猛砸。无法通过MacPorts的

看来,我没有激活它,因为我得到

echo $BASH_VERSION 
3.2.17(1)-release 

你怎么能做出最新猛砸活跃这样,我得到它我的登录shell?

+0

哇,我甚至没有意识到我没有使用更新的shell。谢谢! – Schwern 2009-04-26 21:28:41

回答

72

运行下面的代码,例如改变通过MacPorts的

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命令失败,如果你设法改变上述文件现在再次运行。

+0

如果遇到运行的端口的应用程序的问题,你可以额外需要更新您的bash配置文件。有关更多信息,请参阅http://superuser.com/a/366645/114131。 – 2012-12-30 12:06:04

+0

注意,一个可能需要重新排序在`/ etc/shells`的条目,使得新的`bash`位置之前其他的,一切正常工作。 – DilithiumMatrix 2013-06-13 17:19:19

+0

@ zhermes:不正确。在/ etc/shells中的顺序对任何内容都没有影响。 – Noldorin 2013-12-09 22:50:34

2

我猜它的安装,但不作为你的登录shell。

您可以使用命令行DSCL更换的外壳。

在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

您可以将您的登录shell,从现有的Mac OS X登录shell(默认情况下它/bin/bash附带的Mac OS X),以MacPorts的/opt/local/bin/bash只需使用下面的shell脚本:

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