在 Bash 5.2 发布近三年后,经过长达一年的测试版和候选版本发布周期,类 Unix 操作系统中最流行的命令行 shell 和脚本语言发布了 5.3 版本。
最主要的新功能是一对新的替换形式${ command; }
和,它们在当前${|command;}
Shell 上下文中运行,而不是在子进程中运行。这一变化意味着脚本可以捕获输出(或让命令写入),而无需支付通常的 fork-and-pipe 开销——这对于紧密循环和嵌入式系统非常方便。REPLY
另一个受欢迎的附加功能是GLOBSORT
,这是一个 shell 变量,它允许用户指定路径名扩展的排序方式(按名称、大小、各种时间戳,甚至不排序),以及列表是升序还是降序。
喜欢 Tab 补全的高级用户会喜欢compgen -V
,它可以直接将生成的补全内容填充到变量中;以及read -E
,它现在在抓取交互式输入时借用了 Readline 的可编程补全功能。同时,source -p PATH
允许脚本从显式搜索路径(而不是 )中“插入”伴随文件$PATH
。
代码库已在底层进行了更新,以确保符合 C23(C 编程语言标准的最新修订版)。因此,Bash 将不再使用 K&R 时代的编译器进行构建——这对于大多数发行版来说只是一个注脚,但也标志着遗留工具链需要继续发展。
最后但同样重要的是,Bash 5.3 的孪生兄弟 Readline 8.3 也于同一天发布。这个独立库现在提供了不区分大小写的搜索 ( search-ignore-case
)、一个可调用函数execute-named-command
,以及一个export-completions
向外部程序提供补全数据的功能。
有关变更的完整列表,请参阅官网公告。