统计一下,如果你在用 bash,用什么版本号的 bash?

2019-06-03 12:29:46 +08:00
 adoyle

最近在写 Bash shell script,想到 Bash 4.3 有个 nameref 的特性,但是之前版本都是没有的。 而且 Bash 3 也没有 Associative Array。 于是产生一个疑问,写脚本有必要兼容到 Bash 3 吗?

顺便统计一下,如果你在用 bash,现在用的是什么版本号的 bash ?

7412 次点击
所在节点   Bash
7 条回复
goreliu
2019-06-03 12:40:34 +08:00
如果一个环境的 bash 版本只有 3,那就不只是 bash 版本低了,很可能 coreutils、awk、sed 等等版本都很低,除了专门适配,不然不兼容是很自然的。
mattx
2019-06-03 14:07:57 +08:00
可以通过关注常见发行版的 bash 版本, 来判断, 比如 debian 8+, ubuntu 16+
Kobayashi
2019-06-04 08:30:04 +08:00
最新 5.x 19 年新出,4.0 是 2009 年出的,10 年过去了,这还用问吗?

恐怕除了 macOS 除了 GPL 3 协议原因,默认 /usr/bin/bash 还是 3 (直接检查 BASH_VERSION 让这些脑残升级),其他发行版最差也得是 4。

不同版本新特性速查: http://mywiki.wooledge.org/BashFAQ/061 参考来自最好的 Bash wiki
Kobayashi
2019-06-04 08:32:09 +08:00
另外,4.x 已经进入维护阶段。根据上面参考链接,4.4 最后新特性添加于 2016 年。
adoyle
2019-06-10 10:39:57 +08:00
@Kobayashi 你说的这些我也知道啊,不代表别人也知道,所以需要来做下统计。
另外最新版本发布,不代表用户就会主动升级。我问过一些用 mac 的同事,他们都在用 bash 3,因为他们不常用 bash,所以没有升级的需求。
还是要感谢你的分享。
Kobayashi
2019-06-10 11:16:21 +08:00
@adoyle 我也明白主要问题就在 macOS 平台上。不知道你有没有考虑过 BSD,BSD 上 bash 根本没有自带。但是大家都知道 Bash 算是事实上的默认 shell。

你根本无法满足都有平台,除非你用 POSIX shell。但这样只会让问题变的更麻烦。开发者放弃部分用户也不是不常见。

这种事情无非是看你怎么选择。
adoyle
2019-06-10 11:51:53 +08:00
@Kobayashi 是的,所以我放弃了 Bash 4.3 及之前版本,主要原因是 shopt -s inherit_errexit 这个选项在 4.4 才加进去,我觉得这个功能非常重要,在老版本很难实现这个功能。况且升级 bash 并不是困难的事,而且现在还有 docker。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/570278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX