Bash 5.0 发布及其新功能
创始人
2024-03-02 01:47:28
0

邮件列表证实最近发布了 Bash-5.0。而且,令人兴奋的是它还有新的功能和变量。

如果你一直在使用 Bash 4.4.XX,那么你一定会喜欢 Bash 的第五个主要版本。

第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能,以及一些与 bash-4.4 不兼容的更改。

Bash logo

新功能怎么样?

在邮件列表解释了此版本中修复的 bug:

此版本修复了 bash-4.4 中的几个主要错误,并引入了几个新功能。最重要的 bug 修复是对 nameref 变量的解析以及通过模糊测试发现的许多潜在的内存越界错误。在为了符合 Posix 标准解释而不进行单词拆分的上下文中,对 $@$* 的展开做了许多改变,另外还有解决极端情况中 Posix 一致性的修改。

它还引入了一些新功能。根据其发布说明,最值得注意的新功能是几个新的 shell 变量:

BASH_ARGV0EPOCHSECONDSEPOCHREALTIME。内置命令 history 可以删除指定范围的条目,并能将负数理解为从历史末端开始的偏移量。有一个选项允许局部变量继承前一个范围内具有相同名称的变量的值。有一个新的 shell 选项,在启用它时,会导致 shell 只尝试一次扩展关联数组下标(这在算术表达式中使用时会出现问题)。globasciiranges 这个 shell 选项现在默认启用。可以在配置时默认关闭它。

Bash-4.4 和 Bash-5.0 之间有哪些变化?

其更新日志提到了不兼容的更改和所支持的 readline 版本历史记录。它是这么说的:

bash-4.4 和 bash-5.0 之间存在一些不兼容的变化。尽管我已经尽量最小化兼容性问题,但是对 nameref 变量解析的更改意味着对变量名引用的某些使用会有不同的行为。默认情况下,如果启用了扩展调试模式,shell 仅在启动时设置 BASH_ARGCBASH_ARGV。它被无条件地设置是一个疏忽,并且在脚本传递大量参数时会导致性能问题。

如果需要,可以将 Bash 链接到已安装的 Readline 库,而不是 lib/readline 中的私有版本。只有 readline-8.0 及更高版本能够提供 bash-5.0 所需的所有符号。早期版本的 Readline 库无法正常工作。

我相信一些添加的功能/变量非常有用。我最喜欢的一些是:

  • 有一个新的(默认情况下禁用,文档中没有说明)shell 选项,用于在运行时启用/禁用向 syslog 发送历史记录。
  • 正如文档一直所说的那样,除非 shell 处于调试模式,否则它不会在启动时自动设置 BASH_ARGCBASH_ARGV,但如果脚本在上层引用它们且没有启用调试模式,那么 shell 将动态创建它们。
  • 现在可以使用 -d start-end 删除指定范围的 history 条目。
  • 如果启用了作业控制的非交互式 shell 检测到前台作业因 SIGINT 而死亡,则其行为就像接收到 SIGINT 一样。
  • BASH_ARGV0:一个新变量,扩展为 $0,并在赋值时设置为 $0

要查看完整的更改和功能列表,请参阅邮件列表文章

总结

你可以使用下面的命令检查你当前的 Bash 版本:

bash --version

你很可能安装了 Bash 4.4。如果你想获得新版本,我建议等待你的发行版提供它。

你怎么看待 Bash-5.0 发布?你在使用其他 bash 的替代品么?如果有的话,这个更新会改变你的想法么?

请在下面的评论中告诉我们你的想法。


via: https://itsfoss.com/bash-5-release

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

编写CentOS系统下的B...
面对重复繁琐的服务器操作,手动输入命令效率低下且易出错。为了解决这...
2025-06-15 08:43:24
大数据开发中常用的shel...
内容目录一、date二、find三、awk四、cut五、if六、s...
2025-05-31 22:29:07
shell常见面试题二
(8)、shell中case语法 #!...
2025-05-30 22:47:54
Shell 的变量功能
什么是变量?? 应该很好理解吧&#x...
2025-05-30 15:50:47
shell常见面试题三
(16)、read读取终端输入 &#x...
2025-05-30 13:17:49
Web漏洞-XSS跨站之订...
一、XSS盲打可测试位置留言板、评论区、订单系统、反馈条件等位置。...
2025-05-29 08:31:04

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...