首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Bash

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

  •  
  •   adoyle · 140 天前 · 815 次点击
    这是一个创建于 140 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    7 回复  |  直到 2019-06-10 11:51:53 +08:00
        1
    goreliu   140 天前 via Android
    如果一个环境的 bash 版本只有 3,那就不只是 bash 版本低了,很可能 coreutils、awk、sed 等等版本都很低,除了专门适配,不然不兼容是很自然的。
        2
    mattx   140 天前   ♥ 1
    可以通过关注常见发行版的 bash 版本, 来判断, 比如 debian 8+, ubuntu 16+
        3
    Kobayashi   139 天前 via Android   ♥ 1
    最新 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
        4
    Kobayashi   139 天前 via Android
    另外,4.x 已经进入维护阶段。根据上面参考链接,4.4 最后新特性添加于 2016 年。
        5
    adoyle   133 天前
    @Kobayashi 你说的这些我也知道啊,不代表别人也知道,所以需要来做下统计。
    另外最新版本发布,不代表用户就会主动升级。我问过一些用 mac 的同事,他们都在用 bash 3,因为他们不常用 bash,所以没有升级的需求。
    还是要感谢你的分享。
        6
    Kobayashi   133 天前 via Android
    @adoyle 我也明白主要问题就在 macOS 平台上。不知道你有没有考虑过 BSD,BSD 上 bash 根本没有自带。但是大家都知道 Bash 算是事实上的默认 shell。

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

    这种事情无非是看你怎么选择。
        7
    adoyle   133 天前
    @Kobayashi 是的,所以我放弃了 Bash 4.3 及之前版本,主要原因是 shopt -s inherit_errexit 这个选项在 4.4 才加进去,我觉得这个功能非常重要,在老版本很难实现这个功能。况且升级 bash 并不是困难的事,而且现在还有 docker。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3676 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 10:09 · PVG 18:09 · LAX 03:09 · JFK 06:09
    ♥ Do have faith in what you're doing.