为什么不使用最新版本的 Bash?

为什么不使用最新版本的 Bash?

我在 WSL 上使用 openSUSE 42.3。在我上次更新期间(使用sudo zypper refresh && sudo zypper update),Bash 从版本 4.3.42(1) 更新到版本 4.3-83.3.1。

我关闭了 Bash 窗口(简单地使用exit)并重新启动了 Windows。Windows 重新启动后,我重新打开了 Bash 窗口,然后按下了Control+ X+ V。Bash 输出的仍然是旧版本号。

GNU bash,版本 4.3.42(1)-发布 (x86_64-suse-linux-gnu)

我检查了 的输出zypper info bash,但它说版本 4.3-83.3.1 已安装。

Loading repository data...
Reading installed packages...


Information for package bash:
-----------------------------
Repository     : oss_update
Name           : bash
Version        : 4.3-83.3.1
Arch           : x86_64
Vendor         : openSUSE
Installed Size : 742.5 KiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : bash-4.3-83.3.1.src
Summary        : The GNU Bourne-Again Shell
Description    :
    Bash is an sh-compatible command interpreter that executes commands
    read from standard input or from a file.  Bash incorporates useful
    features from the Korn and C shells (ksh and csh).  Bash is intended to
    be a conformant implementation of the IEEE Posix Shell and Tools
    specification (IEEE Working Group 1003.2).

我还检查了 的输出zypper lr -d,但我没有看到任何可以解释正在发生的事情的内容。

# 别名 启用 类型
1 开发语言go 是的 转速-md
2 开发语言_php 是的 转速-md
3 操作系统 是的 转速-md
4 oss_更新 是的 转速-md
5 server_php_extensions_php7 是的 转速-md

为什么不使用 Bash 的更新版本?

我搜索了名称匹配的任何文件巴什(与sudo find /[^m]* -name "bash" -type f, where/[^m]*用于避免 /mount 目录,这是与该模式匹配的唯一目录)。它找到的唯一文件是 /bin/bash,其输出/bin/bash --version如下。

GNU bash,版本 4.3.42(1)-release (x86_64-suse-linux-gnu) 版权所有 (C) 2013 Free Software Foundation, Inc. 许可证 GPLv3+:GNU GPL 版本 3 或更高版本http://gnu.org/licenses/gpl.html

这是免费软件;您可以自由更改和重新分发它。在法律允许的范围内,不提供任何保证。

Zypper 如何认为它安装了我找不到已安装文件的更新?

作为旁注,我没有更改 Windows 用于启动 openSUSE 的符号链接,这意味着 WSL 使用的 Bash 是 openSUSE 的 /bin/bash。

答案1

它正在使用正确且最新的版本。

将原rpm包下载到工作文件夹中:

wget http://download.opensuse.org/update/leap/42.3/oss/x86_64/bash-4.3-83.3.1.x86_64.rpm

拆开包装:

rpm2cpio bash-4.3-83.3.1.x86_64.rpm | cpio -idmv

包含的 bash 是:

./bin/bash --version    # The leading . is important
GNU bash, Version 4.3.42(1)-release (x86_64-suse-linux-gnu)

软件包的版本号并不完全链接到已安装软件的版本(这里仅4.3部分)。想象一下这样一个场景:包维护者犯了一个错误并想要发送更新。打包的软件版本保持不变,但他要更新软件包,因此增加了软件包版本。

相关内容