Bash

為什麼不使用最新版本的 Bash?

  • April 23, 2022

我在 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++ 。什麼 Bash 輸出仍然是舊版本號。X``V

GNU bash,版本 4.3.42(1)-release (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,但我沒有看到任何可以解釋正在發生的事情的東西。

為什麼不使用更新版本的 Bash?

我搜尋了名稱與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。

它正在使用正確和最新的版本。

將原始 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-Part)。想像一下包維護者出錯並想要發送更新的場景。打包的軟體版本保持不變,但他必須更新包,因此增加了包版本。

引用自:https://unix.stackexchange.com/questions/425259