GNU Bourne Again SHell (Bash) 项目团队宣布 Bash 5.2 正式发行,这是大多数 Linux 发行版上的默认 shell 。
Bash 5.2 的主要新特性
- 最大的新特性是重写的命令替换解析代码,新代码递归地调用 bison 解析器。这取代了以前版本中使用的临时解析,提供更好的语法检查,可以迅速捕获语法错误。
- 另一个变化是改进了数组索引的解析和扩展,以及另外提供了使用内置命令中的“@”和“*”参数将键重置为给定值的能力,而不是重置整个阵列。
- 除此之外,还增加了一个新的设置“patsub_replacement”,启用时,模式替换的替换字符串中的“&” 被替换为匹配模式的字符串部分,反斜杠将转义“&”并插入文字“&”。
- 一个新的 readline 等待时间框架,包括新的公共函数,用来设置超时,并查看在超时之前还剩多少时间。
其他变化包括:
- 扩展了额外进程不分叉的情况,例如使用“$(”构造时不再使用分叉。
- 提供了在编译时启用(配置--enable-alt-array-implementation)替代数组实现的能力,该实现针对最大访问速度进行了优化,以增加内存消耗为代价。
- “printf”有一个新的格式说明符“%Q”,类似于 "%q" ,它将任何指定的精度应用于不带引号的原始参数,然后引用并输出结果。
- 添加了 noexpand_translations 设置和“configure --enable-translatable-strings”构建选项,用来控制是否启用对 $“...” 可本地化替换的支持。
- 在 posix 模式下,'printf' 现在可以使用 long double 作为浮点转换说明符(如果存在),否则它必须是 double 。
更多内容可查看更新邮件。