Bash 5.0 釋出及其新功能
郵件列表證實最近釋出了 Bash-5.0。而且,令人興奮的是它還有新的功能和變數。
如果你一直在使用 Bash 4.4.XX,那麼你一定會喜歡 Bash 的第五個主要版本。
第五個版本側重於新的 shell 變數和許多重大漏洞修復。它還引入了一些新功能,以及一些與 bash-4.4 不相容的更改。
新功能怎麼樣?
在郵件列表解釋了此版本中修復的 bug:
此版本修復了 bash-4.4 中的幾個主要錯誤,並引入了幾個新功能。最重要的 bug 修復是對 nameref 變數的解析以及通過模糊測試發現的許多潛在的記憶體越界錯誤。在為了符合 Posix 標準解釋而不進行單詞拆分的上下文中,對
$@
和$*
的展開做了許多改變,另外還有解決極端情況中 Posix 一致性的修改。
它還引入了一些新功能。根據其釋出說明,最值得注意的新功能是幾個新的 shell 變數:
BASH_ARGV0
、EPOCHSECONDS
和EPOCHREALTIME
。內建命令history
可以刪除指定範圍的條目,並能將負數理解為從歷史末端開始的偏移量。有一個選項允許區域性變數繼承前一個範圍內具有相同名稱的變數的值。有一個新的 shell 選項,在啟用它時,會導致 shell 只嘗試一次擴充套件關聯陣列下標(這在算術表示式中使用時會出現問題)。globasciiranges
這個 shell 選項現在預設啟用。可以在配置時預設關閉它。
Bash-4.4 和 Bash-5.0 之間有哪些變化?
其更新日誌提到了不相容的更改和所支援的 readline 版本歷史記錄。它是這麼說的:
bash-4.4 和 bash-5.0 之間存在一些不相容的變化。儘管我已經儘量最小化相容性問題,但是對
nameref
變數解析的更改意味著對變數名引用的某些使用會有不同的行為。預設情況下,如果啟用了擴充套件除錯模式,shell 僅在啟動時設定BASH_ARGC
和BASH_ARGV
。它被無條件地設定是一個疏忽,並且在指令碼傳遞大量引數時會導致效能問題。如果需要,可以將 Bash 連結到已安裝的 Readline 庫,而不是
lib/readline
中的私有版本。只有 readline-8.0 及更高版本能夠提供 bash-5.0 所需的所有符號。早期版本的 Readline 庫無法正常工作。
我相信一些新增的功能/變數非常有用。我最喜歡的一些是:
- 有一個新的(預設情況下禁用,文件中沒有說明)shell 選項,用於在執行時啟用/禁用向 syslog 傳送歷史記錄。
- 正如文件一直所說的那樣,除非 shell 處於除錯模式,否則它不會在啟動時自動設定
BASH_ARGC
和BASH_ARGV
,但如果指令碼在上層引用它們且沒有啟用除錯模式,那麼 shell 將動態建立它們。 - 現在可以使用
-d start-end
刪除指定範圍的history
條目。 - 如果啟用了作業控制的非互動式 shell 檢測到前臺作業因 SIGINT 而死亡,則其行為就像接收到 SIGINT 一樣。
BASH_ARGV0
:一個新變數,擴充套件為$0
,並在賦值時設定為$0
。
要檢視完整的更改和功能列表,請參閱郵件列表文章。
總結
你可以使用下面的命令檢查你當前的 Bash 版本:
bash --version
你很可能安裝了 Bash 4.4。如果你想獲得新版本,我建議等待你的發行版提供它。
你怎麼看待 Bash-5.0 釋出?你在使用其他 bash 的替代品麼?如果有的話,這個更新會改變你的想法麼?
請在下面的評論中告訴我們你的想法。
via: https://itsfoss.com/bash-5-release
作者:Ankush Das 選題:lujun9972 譯者:geekpi 校對:wxy
相關文章
- .NET 5.0釋出 - microsoftROS
- Tor Browser 5.0釋出
- KDE Plasma 5.0釋出ASM
- bash及其特性
- MQTT 5.0 訊息釋出流程MQQT
- Qt 5.0 正式版釋出QT
- MQTT5.0 訊息釋出流程MQQT
- Java編輯器jEdit 5.0釋出Java
- Angular 6釋出,新功能詳解Angular
- 會員權益-新功能釋出:定時釋出博文
- 如約而至,.NET 5.0 正式釋出
- VMware 5.0 Build 11888 釋出UI
- HHDESK新功能釋出,歡迎大家使用
- Windows 2000 IIS 5.0新功能(轉)Windows
- Docker 1.12.0將要釋出的新功能Docker
- 魅族Flyme 5.0版本即將釋出:基於安卓5.0系統安卓
- SonarQube 5.0 釋出,程式碼質量管理平臺
- 開源 CMS Ghost 3.0 釋出,帶來新功能
- Unity 5.5正式版釋出,新功能預覽!Unity
- Laravel 5.5 LTS 正式釋出!(包含新功能說明)Laravel
- .NET 5.0 RC1 釋出,離正式版釋出僅剩兩個版本
- EMQX v4.4.5 釋出:新增排他訂閱及 MQTT 5.0 釋出屬性支援MQQT
- Wine 5.0 釋出了!
- Spark版本釋出歷史,及其各版本特性Spark
- EMQ X Cloud - MQTT 5.0 公有云服務正式釋出MQCloudQT
- .NET5.0 單檔案釋出打包操作深度剖析
- 華為自曝:EMUI 5.0將隨Mate9釋出UI
- Apache Lucene 5.0釋出,不再相容3.X系列版本Apache
- 開源編譯器 GCC 跨越 5.0,釋出 GCC 5.1編譯GC
- BitTorrent 客戶端 Deluge 2.0 釋出:新功能介紹客戶端
- Undo 釋出用於 Linux 除錯的 Live Recorder 5.0Linux除錯
- 時隔兩年,Oracle VirtualBox 5.0 正式版釋出Oracle
- 重磅!鐳速傳輸Raysync釋出11項全新功能
- Angular v8 釋出!來看看有什麼新功能Angular
- RoboVM 1.0 釋出 —— 商業許可和新功能介紹
- 《Bash 指令碼教程》釋出了指令碼
- bash程式設計 註釋程式設計
- tomcat 5.0釋出後,訪問時出現java.lang.NoClassDefFoundError錯誤TomcatJavaError