我通过 MacPorts 将我的 Bash 更新为 3.2.48 失败。
似乎我没有激活它,因为我得到了
echo $BASH_VERSION
3.2.17(1)-release
您如何使最新的 Bash 处于活动状态,以便我为我的登录 shell 获取它?
运行以下代码,例如将您的 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 命令失败,如果您设法更改了上述文件,请立即再次运行它。
我猜它已安装但未用作您的登录外壳。
您可以在命令行上使用 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 的示例。
您可以使用以下 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