经过近2年的发展 (确切地说是二十个月的发展) 发射 新版本的 GNU shell 重击 5.2, 这是对第五个分支 (5.x) 的更新,此版本修复了 bash-5.1 中的几个显着错误并引入了许多新功能。
对于那些不熟悉 bash 的人来说,你应该知道这是大多数 Linux 发行版上的默认 shell。
Bash 5.2的主要新功能
在这个从 Bash 5.2 提供的新版本中 值得注意的是,已经完成了重写代码以分析命令替换结构的工作 并在执行另一个命令时替换输出,例如 "$(command)" 或 `command`。 新的实现递归地调用野牛解析器。 这取代了以前版本中使用的临时解析,并允许更好的语法检查并更早地捕获语法错误。
在这个新版本的 Bash 5.2 中突出的另一个变化是 改进了数组索引的解析和扩展, 加上在内置命令中使用“@”和“*”参数将键重置为给定值而不是重置整个数组的功能已经实现。
除此之外,还提到了 添加了一个新设置“patsub_replacement”, 设置后,替换字符串中的“&”字符用于替换与给定模式匹配的字符串部分。
还 强调有一个新的 readline 等待时间框架, 其中包括新的
公共函数来设置超时并查看在超时之前还剩多少时间,此外还有一个新的配置选项:--with-shared-termcap-library,它强制共享 readline 库链接到共享 termcap 库(或 curses /ncurses/termlib) 所以应用程序不必这样做。
其他变化 从这个新版本的 Bash 5.2 中脱颖而出:
- 扩展了额外进程不分叉的情况,例如使用“$(”构造时不再使用分叉
- 为计时器和超时计算实施了一个新的内部框架。
- 提供了在编译时启用(配置--enable-alt-array-implementation)替代数组实现的能力,该实现针对最大访问速度进行了优化,但以增加内存消耗为代价。
- 本地化中使用的 $'...' 和 $»...» 替换的扩展使用。
- “printf”有一个新的格式说明符“%Q”。 这类似于 "%q" 但将任何指定的精度应用于不带引号的原始参数,然后引用并输出结果。
- 添加了 noexpand_translations 设置和“configure --enable-translatable-strings”构建选项来控制是否启用对 $“...” 可本地化替换的支持。
- 在 posix 模式下,'printf' 现在可以使用 long double 作为浮点转换说明符(如果存在),否则它必须是 double 否则。
- 添加并默认启用“globskipdots”以避免“。” 和“..”扩展路线时..
同时发布了readline 8.2库,用于在bash中组织命令行编辑。
最后,应该提到的是 此版本的 bash 可以与 Readline 库链接 如果您愿意,已经安装而不是 lib/readline 中的私有版本。 值得一提的是,版本 readline-8.1 以及更高版本可以提供 bash-5.2 所需的所有符号,因此早期版本的 Readline 库将无法正常工作。
最后对于那些有兴趣能够了解更多的人以及想要立即获得这个新版本的人, 您可以访问以下链接。
如何在Linux上获得Bash 5.2?
现在 剩下的只是等待这个新版本的Bash被合并 在Linux发行版的存储库中,因为它是最佳选择。