38

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

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

echo $BASH_VERSION
3.2.17(1)-release

您如何使最新的 Bash 处于活动状态,以便我为我的登录 shell 获取它?

4

3 回答 3

75

运行以下代码,例如将您的 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 命令失败,如果您设法更改了上述文件,请立即再次运行它。

于 2009-04-26T17:25:49.797 回答
2

我猜它已安装但未用作您的登录外壳。

您可以在命令行上使用 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

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

于 2009-04-26T21:23:54.750 回答
2

您可以使用以下 shell 脚本将登录 shell 从现有的 Mac OS X 登录 shell(默认情况下/bin/bash随 Mac OS X 提供)切换到 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
于 2013-03-15T21:34:32.933 回答