PRF:20190109 Bash 5.0 Released with New Features.md

@geekpi
This commit is contained in:
Xingyu.Wang 2019-01-25 23:02:45 +08:00
parent 5bdbdf012b
commit 1246212c9f

View File

@ -1,50 +1,48 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: reviewer: (wxy)
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Bash 5.0 Released with New Features)
[#]: via: (https://itsfoss.com/bash-5-release)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
Bash 5.0 发布新功能
Bash 5.0 发布及其新功能
======
[邮件列表][1]证实最近发布了 Bash-5.0。而且,令人兴奋的是它还有新功能和变量。
[邮件列表][1]证实最近发布了 Bash-5.0。而且,令人兴奋的是它还有新功能和变量。
如果你一直在使用 Bash 4.4.XX那么你一定会喜欢 [Bash][2] 的第五个主要版本。
第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能还有一些让 bash-4.4 和 bash-5.0 之间不兼容的更改。
第五个版本侧重于新的 shell 变量和许多重大漏洞修复。它还引入了一些新功能,以及一些与 bash-4.4 不兼容的更改。
![Bash logo][3]
### 新功能怎么样?
邮件列表解释了此版本中修复的 bug
邮件列表解释了此版本中修复的 bug
> 此版本修复了 bash-4.4 中的几个主要错误,并引入了几个新功能。最重要的 bug 修复是对 nameref 变量的解析以及通过模糊测试发现的许多潜在的内存越界错误。在为了符合 Posix 标准解释而不进行单词拆分的上下文中,对 $@ 和 $* 的展开做了许多变,另外还有解决极端情况中 Posix 一致性的修改。
> 此版本修复了 bash-4.4 中的几个主要错误,并引入了几个新功能。最重要的 bug 修复是对 nameref 变量的解析以及通过模糊测试发现的许多潜在的内存越界错误。在为了符合 Posix 标准解释而不进行单词拆分的上下文中,对 `$@``$*` 的展开做了许多变,另外还有解决极端情况中 Posix 一致性的修改。
它还引入了一些新功能。根据发布说明,最值得注意的新功能是几个新的 shell 变量:
它还引入了一些新功能。根据发布说明,最值得注意的新功能是几个新的 shell 变量:
> BASH_ARGV0、EPOCHSECONDS 和 EPOCHREALTIME。内置的 “history” 可以删除指定范围的条目并能将负数理解为从历史末端开始的偏移量。有一个选项允许局部变量继承前一个范围内具有相同名称的变量的值。有一个新的shell选项在启用它时会导致 shell 只尝试一次扩展关联数组下标(这在算术表达式中使用时会出现问题)。“globasciiranges” 这个 shell 选项现在默认启用。可以在配置时默认关闭它。
> `BASH_ARGV0`、`EPOCHSECONDS` 和 `EPOCHREALTIME`。内置命令 `history` 可以删除指定范围的条目,并能将负数理解为从历史末端开始的偏移量。有一个选项允许局部变量继承前一个范围内具有相同名称的变量的值。有一个新的 shell 选项,在启用它时,会导致 shell 只尝试一次扩展关联数组下标(这在算术表达式中使用时会出现问题)。`globasciiranges` 这个 shell 选项现在默认启用。可以在配置时默认关闭它。
### Bash-4.4 和 Bash-5.0 之间有哪些变化?
更新日志提到了不兼容的更改和支持 readline 版本历史记录。它是这么说的:
更新日志提到了不兼容的更改和支持 readline 版本历史记录。它是这么说的:
> bash-4.4 和 bash-5.0 之间存在一些不兼容的变化。尽管我已经尽量最小化兼容性问题,但是对 nameref 变量解析的更改意味着对 namerefs 的某些使用会有不同的行为。默认情况下如果启用了扩展调试模式shell 仅在启动时设置 BASH_ARGC 和 BASH_ARGV。它被无条件地设置是一个疏忽并且在脚本传递大量参数时会导致性能问题。
> bash-4.4 和 bash-5.0 之间存在一些不兼容的变化。尽管我已经尽量最小化兼容性问题,但是对 `nameref` 变量解析的更改意味着对变量名引用的某些使用会有不同的行为。默认情况下如果启用了扩展调试模式shell 仅在启动时设置 `BASH_ARGC``BASH_ARGV`。它被无条件地设置是一个疏忽,并且在脚本传递大量参数时会导致性能问题。
>
>如果需要,可以将 Bash 链接到已安装的 Readline 库,而不是 lib/readline 中的私有版本。只有 readline-8.0 及更高版本能够提供 bash-5.0 所需的所有符号。早期版本的 Readline 库无法正常工作。
> 如果需要,可以将 Bash 链接到已安装的 Readline 库,而不是 `lib/readline` 中的私有版本。只有 readline-8.0 及更高版本能够提供 bash-5.0 所需的所有符号。早期版本的 Readline 库无法正常工作。
我相信一些添加的功能/变量非常有用。我最喜欢的一些是:
* 有一个新的默认情况下禁用文档中没有说明shell 选项,用于在运行时启用/禁用向 syslog 发送历史记录。
* 正如文档一直所说的那样,除非 shell 处于调试模式,否则它不会在启动时自动设置 BASH_ARGC 和 BASH_ARGV但如果脚本在上层引用它们且没有启用调试模式那么 shell 将动态创建它们。
* 现在可以使用 “-d start-end” 删除指定范围的 “history” 条目。
* 正如文档一直所说的那样,除非 shell 处于调试模式,否则它不会在启动时自动设置 `BASH_ARGC``BASH_ARGV`,但如果脚本在上层引用它们且没有启用调试模式,那么 shell 将动态创建它们。
* 现在可以使用 `-d start-end` 删除指定范围的 `history` 条目。
* 如果启用了作业控制的非交互式 shell 检测到前台作业因 SIGINT 而死亡,则其行为就像接收到 SIGINT 一样。
* BASH_ARGV0一个新变量扩展为 $0 并在赋值时设置 $0。
* `BASH_ARGV0`:一个新变量,扩展为 `$0`,并在赋值时设置为 `$0`
要查看完整的更改和功能列表,请参阅[邮件列表文章][1]。
@ -69,7 +67,7 @@ via: https://itsfoss.com/bash-5-release
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -77,4 +75,4 @@ via: https://itsfoss.com/bash-5-release
[b]: https://github.com/lujun9972
[1]: https://lists.gnu.org/archive/html/bug-bash/2019-01/msg00063.html
[2]: https://www.gnu.org/software/bash/
[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/01/bash-logo.jpg?resize=800%2C450&ssl=1
[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/01/bash-logo.jpg?resize=800%2C450&ssl=1