akxer Asked: 2018-10-30 22:37:28 +0800 CST2018-10-30 22:37:28 +0800 CST 2018-10-30 22:37:28 +0800 CST bash 5 中的新功能 772 我只是通过官方的 bash 存储库(我通常不这样做)来寻找一些不相关的东西,但注意到 bash 5 已经处于测试阶段。我只是对 bash 5 中的新功能感到好奇,但找不到任何信息。有人可以总结 4.4 和 5 版本 Bash 之间的变化吗 bash upgrade 3 个回答 Voted Best Answer Kusalananda 2018-10-30T22:49:30+08:002018-10-30T22:49:30+08:00 bash4.4 版和 5.0 版(2019-01-07 发布)之间的更改可以在源代码分发的NEWS文件中找到。bash 这是它的链接(更改太多,无法在此处列出)。 Jacktose 2019-01-09T17:19:36+08:002019-01-09T17:19:36+08:00 如果您和我一样,正在寻找标题功能而不是完整的变更日志,那么维护者 Chet Ramey 的这篇文章将对此进行介绍。这是有趣的部分: 此版本修复了 bash-4.4 中的几个突出错误并引入了几个新功能。最重要的错误修复是对 nameref 变量如何解析的彻底检查以及通过模糊测试发现的一些潜在的越界内存错误。在不执行分词以符合 Posix 标准解释的各种上下文中,对 $@ 和 $* 的扩展进行了许多更改,并进行了其他更改以解决符合 Posix 的极端情况。 最值得注意的新特性是几个新的 shell 变量:BASH_ARGV0、EPOCHSECONDS 和 EPOCHREALTIME。`history' 内置可以删除历史条目的范围,并将否定参数理解为从历史列表末尾的偏移量。有一个选项允许局部变量继承前一个范围内同名变量的值。有一个新的 shell 选项,当启用时,会导致 shell 尝试仅扩展关联数组下标一次(这是在算术表达式中使用它们时的问题)。`globasciiranges' shell 选项现在默认启用;它可以在配置时默认设置为关闭。 bash-4.4 和 bash-5.0 之间有一些不兼容的更改。解析 nameref 变量的方式的变化意味着 namerefs 的某些使用将表现不同,尽管我试图最小化兼容性问题。默认情况下,如果启用扩展调试模式,shell 只会在启动时设置 BASH_ARGC 和 BASH_ARGV;当脚本被传递大量参数时,它被无条件设置并导致性能问题,这是一个疏忽。 他还参考了这两个文件,以防您想要更多: 新闻:更多细节(也在 Kusalananda 的回答中) 变化:最详细 David Hatch 2019-01-18T10:22:35+08:002019-01-18T10:22:35+08:00 `history' 内置可以删除历史条目的范围,并将否定参数理解为从历史列表末尾的偏移量。 删除范围的示例: history -d 123-130 或删除最后 10 个: history -d -10--1 摘自Bash 5 手册页: '历史' 选项(如果提供)具有以下含义: '-d OFFSET' 删除位置 OFFSET 的历史条目。如果 OFFSET 为正,则应指定为显示历史记录时出现的值。如果 OFFSET 是负数,它被解释为相对于比最后一个历史位置大一,因此负索引从历史记录的末尾开始计数,并且索引“-1”指的是当前的“历史 -d”命令。 '-d START-END' 删除位置 START 和 END 之间的历史条目,包括端点。START 和 END 的正值和负值按上述解释。 请参阅我的相关答案:删除一系列 bash 历史记录
bash
4.4 版和 5.0 版(2019-01-07 发布)之间的更改可以在源代码分发的NEWS
文件中找到。bash
这是它的链接(更改太多,无法在此处列出)。
如果您和我一样,正在寻找标题功能而不是完整的变更日志,那么维护者 Chet Ramey 的这篇文章将对此进行介绍。这是有趣的部分:
他还参考了这两个文件,以防您想要更多:
删除范围的示例:
或删除最后 10 个:
摘自Bash 5 手册页:
请参阅我的相关答案:删除一系列 bash 历史记录