暮光博客

小心你讨厌的东西,因为你很可能被它塑造成某种形状

升级 macOS 的 bash

技术 3 条评论

macOS 11.12 自带的 bash 是 3.4 版本的,下午给 Visual Studio Code 装了一个 Bash Debug 插件,插件要求的 bash 版本是 4.0+,就升级了一下 bash,而且 4.0 支持了一些新特性。

bash 4.0 新增支持了关联数组(associative arrays),改进了可编程完成函数(completion functionality),case-modifying 单词扩充,复合进程,增加 shell 句法和重定向。 shell 在分析内部命令替换上变得更严格,修正了 POSIX 虚拟接口的不兼容块。

使用 homebrew 安装 bash

最便捷的方式就是使用 brew 了,会默认安装 bash 的最新版本。

brew install bash

==> Installing dependencies for bash: readline
==> Installing bash dependency: readline
==> Downloading https://homebrew.bintray.com/bottles/readline-6.3.8.yosemite.bottle.tar.gz
……

替换系统自带 bash

sudo mv /bin/bash /bin/bash.old
sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash

使用以上命令发现没有操作权限,因为 MacOS 引入了 SIP(System Integrity Protection) 安全机制,导致软件层无法操作系统底层目录和文件,需要先关闭 SIP。

关闭 SIP 的操作步骤如下:

  1. 重启系统,按住Command+R进入恢复模式
  2. 进入恢复模式后,打开「实用工具」菜单中的终端
  3. 在 Terminal 中输入csrutil disable关闭 SIP (csrutil enable为打开)
  4. 重启系统

重启后重新执行:

sudo mv /bin/bash /bin/bash.old
sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash

大功告成,输入bash -version查看系统 bash 版本是否正确被替换:

☁  ~  /bin/bash -version
GNU bash,版本 4.4.23(1)-release (x86_64-apple-darwin16.7.0)
Copyright (C) 2016 Free Software Foundation, Inc.
许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 <http://gnu.org/licenses/gpl.html>

本软件是自由软件,您可以自由地更改和重新发布。
在法律许可的情况下特此明示,本软件不提供任何担保。
谁动了我的 RSS
评论区 / 取消回复
选择表情选择表情
  1. liufengsoft

    使用 chsh 来更换 shell, 而不要关闭系统 SIP 这个复杂而且容易出问题的方案

    回复
  2. 没玩过,这玩意是干嘛的。用过brew装过软件

    回复
    1. @从良未遂

      Bash 就是 shell,你也可以理解为脚本。

      回复