嵌入式linux QQ交流群:175159209,欢迎爱好者加入交流技术问题!
Unix Bash 放出第 5 个主要版本 这个版本主要修复了 Bash 4.4 中几个明显的错误,同时也加入了一些新功能。Bash 是一个完整的 POSIX 规范项目,除了有交互式命令列编辑功能,还在基架构上支援工作控制,并提供类似 csh 的功能等。
Bash 5.0 主要解決 Bash 4.4 的错误,改变对 nameref 解析的方法,和一系列以模糊测试发现的潜在查出范围的错误。另外,Bash 5.0 在不执行字符拆解以符合 Posix 标准解释的情況下,在不同的上下文中,$@和$*的擴充也有許多改變,而且還解決不少極端案例以增加 Posix 的一致性。
而本次最重要的功能更新,是增加了新的环境变量,BASH_ARGV0、EPOCHSECONDS 和 EPOCHREALTIME。而内建的 History 功能现在可以用来刪除历史数据的范围,并且将负的参数作为历史列表末端的偏移量。Bash 5.0 还增加了一个选项,允许区域变量集成前一个作用域中,具有相同名称的变量名。
另外,还加入一个新的选项,启用后将允许 shell 只尝试 扩展开始下标(Subscripts)一次,但官方表示,这个功能在数学表达式中仍会出现使用问题。Bash 5.0 现在会预设启用 globasciiranges 选项,使用者可以在配置阶段將其设定为预设关闭。
官方提醒,Bash 4.4 和 Bash 5.0 之間存在部分不兼容的更新,像是 nameref 解析方法的更新,代表着使用 namerefs 会出现不同的行为,尽管官方提到他们已经尽可能减少这种兼容性问题,但仍有部分无法避免。除此之外,现在在预设情况下,当启用扩充模式的时候, shell 才会启动配置 BASH_ARGC 和 BASH_ARGV,官方表示,这是一个之前的设置定疏忽,在传递大量参数时,会造成效率低下的问题。
官方建议使用者可以将 Bash 连接到已安裝的 Readline 库,而非使用 lib/readline 中的版本,因为只有 Readline 8.0 以及以上版本,才能提供所有 Bash 5.0 需要的字符,使用早前的 Readline 库版本将无法正常运行。
升级至 Bash 5.0
检查现有的 bash 版本
bash --version
。使用 brew 安装 bash
brew install bash
。
由于 MacOS 禁止更改系统目录权限,并引入 sip 机制,所以需要先关闭 sip,修改 bash 相关设置,再打开 sip 。
重启 MacOS ,开机时按住
Command+R
。出现界面之后,选择 Utilities menu 中 Terminal 。
在 Terminal 中输入
csrutil disable
关闭 SIP。重启 MacOS
加入软连接
sudo mv /bin/bash /bin/bash.origin
sudo ln -s /usr/local/bin/bash /bin/bash
重启电脑,开机时按住
Command+R
。出现界面之后,选择 Utilities menu 中 Terminal 。
在 Terminal 中输入
csrutil enable
打开 SIP。
更新截图:
Linux中文站最专业的中文嵌入式Linux网站,8年磨剑,注册用户数万人!
分享 嵌入式 & Linux 技术干货、教程、资讯、高薪职位
订阅点击标题下方“嵌入式Linux中文站”
分享点击右上角分享按钮
投稿admin@embeddedlinux.org.cn
交流QQ群:175159209
点击下方“ 阅读原文 ”查看更多