Bash 5.0 发布,部分功能与 4.4 不兼容

程六金
 程六金
发布于 2019年01月10日
收藏 5

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

  1. 检查现有的 bash 版本 bash --version

  2. 使用 brew 安装 bash brew install bash

由于 MacOS 禁止更改系统目录权限,并引入 sip 机制,所以需要先关闭sip,修改 bash 相关设置,再打开 sip 。

  1. 重启 MacOS ,开机时按住 Command+R

  2. 出现界面之后,选择 Utilities menu 中 Terminal 。

  3. 在Terminal 中输入 csrutil disable 关闭SIP。

  4. 重启 MacOS

  5. 加入软连接

sudo mv /bin/bash /bin/bash.origin 
sudo ln -s /usr/local/bin/bash /bin/bash

  1. 重启电脑,开机时按住 Command+R

  2. 出现界面之后,选择 Utilities menu 中 Terminal 。

  3. 在Terminal 中输入 csrutil enable 打开 SIP。

更新截图:

 

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Bash 5.0 发布,部分功能与 4.4 不兼容
加载中

精彩评论

Mayeff
Mayeff
等一个壁纸
sofn
sofn
求高清大图
Mayeff
Mayeff

引用来自“Mayeff”的评论

等一个壁纸

引用来自“程六金”的评论

...同是二次元中人?
少废话,快点
冰力
冰力

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金

引用来自“程六金”的评论

我亲测是可以 。

引用来自“冰力”的评论

@程六金 我刚测了 4.4

引用来自“冰力”的评论

PS /Users/zoujiaqing> brew install bash
Warning: bash 4.4.23 is already installed and up-to-date
To reinstall 4.4.23, run `brew reinstall bash`
PS /Users/zoujiaqing> uname -a
Darwin osx.local 18.2.0 Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64
@冰力 国内源惹的祸,同步太慢,这个大家注意一下。
程六金
程六金

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金
我亲测是可以 。

最新评论(15

雪兵
雪兵

引用来自“Mayeff”的评论

等一个壁纸
求高清壁纸~
Mayeff
Mayeff

引用来自“Mayeff”的评论

等一个壁纸

引用来自“程六金”的评论

...同是二次元中人?
少废话,快点
冰力
冰力

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金

引用来自“程六金”的评论

我亲测是可以 。

引用来自“冰力”的评论

@程六金 我刚测了 4.4

引用来自“冰力”的评论

PS /Users/zoujiaqing> brew install bash
Warning: bash 4.4.23 is already installed and up-to-date
To reinstall 4.4.23, run `brew reinstall bash`
PS /Users/zoujiaqing> uname -a
Darwin osx.local 18.2.0 Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64
@冰力 国内源惹的祸,同步太慢,这个大家注意一下。
wennan
wennan
“官方表示,这是一个之前的设置定疏忽,在传递大量参数时,会造成效率低下的问题”

我都用shell了,还在乎效率?
冰力
冰力

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金

引用来自“程六金”的评论

我亲测是可以 。

引用来自“冰力”的评论

@程六金 我刚测了 4.4
PS /Users/zoujiaqing> brew install bash
Warning: bash 4.4.23 is already installed and up-to-date
To reinstall 4.4.23, run `brew reinstall bash`
PS /Users/zoujiaqing> uname -a
Darwin osx.local 18.2.0 Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64
程六金
程六金

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金

引用来自“程六金”的评论

我亲测是可以 。

引用来自“冰力”的评论

@程六金 我刚测了 4.4
那应该不是 Mac 系统吧。
sofn
sofn
求高清大图
冰力
冰力

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金

引用来自“程六金”的评论

我亲测是可以 。
@程六金 我刚测了 4.4
程六金
程六金

引用来自“冰力”的评论

brew install bash 应该是 4.4 @程六金
我亲测是可以 。
冰力
冰力
brew install bash 应该是 4.4 @程六金
返回顶部
顶部