經過近2年的發展 (確切地說是二十個月的發展) 發射 新版本的 GNU shell 重擊 5.2, 這是對第五個分支 (5.x) 的更新,此版本修復了 bash-5.1 中的幾個顯著錯誤並引入了許多新功能。
對於那些不熟悉 bash 的人來說,你應該知道這是大多數 Linux 發行版上的默認 shell。
Bash 5.2的主要新功能
在這個從 Bash 5.2 提供的新版本中 值得注意的是,已經完成了重寫代碼以分析命令替換結構的工作 並在執行另一個命令時替換輸出,例如 "$(command)" 或 `command`。 新的實現遞歸地調用野牛解析器。 這取代了以前版本中使用的臨時解析,並允許更好的語法檢查並更早地捕獲語法錯誤。
在這個新版本的 Bash 5.2 中突出的另一個變化是 改進了數組索引的解析和擴展, 加上使用內置命令中的“@”和“*”參數將鍵重置為給定值而不是重置整個數組的功能已經實現。
除此之外,還提到了 添加了一個新設置“patsub_replacement”, 設置後,替換字符串中的“&”字符用於替換與給定模式匹配的字符串部分。
坦比恩 強調有一個新的 readline 等待時間框架, 其中包括新的
公共函數來設置超時並查看在超時之前還剩多少時間,此外還有一個新的配置選項:--with-shared-termcap-library,它強制共享 readline 庫鏈接到共享 termcap 庫(或 curses /ncurses/termlib) 所以應用程序不必這樣做。
其他變化 從這個新版本的 Bash 5.2 中脫穎而出:
- 擴展了額外進程不分叉的情況,例如使用“$(”構造時不再使用分叉
- 為計時器和超時計算實施了一個新的內部框架。
- 提供了在編譯時啟用(配置--enable-alt-array-implementation)替代數組實現的能力,該實現針對最大訪問速度進行了優化,但以增加內存消耗為代價。
- 本地化中使用的 $'...' 和 $»...» 替換的擴展使用。
- “printf”有一個新的格式說明符“%Q”。 這類似於 "%q" 但將任何指定的精度應用於不帶引號的原始參數,然後引用並輸出結果。
- 添加了 noexpand_translations 設置和“configure --enable-translatable-strings”構建選項來控制是否啟用對 $“...” 可本地化替換的支持。
- 在 posix 模式下,'printf' 現在可以使用 long double 作為浮點轉換說明符(如果存在),否則它必須是 double 否則。
- 添加並默認啟用“globskipdots”以避免“。” 和“..”擴展路線時..
同時發布了readline 8.2庫,用於在bash中組織命令行編輯。
最後,應該提到的是 此版本的 bash 可以與 Readline 庫鏈接 如果您願意,已經安裝而不是 lib/readline 中的私有版本。 值得一提的是,版本 readline-8.1 以及更高版本可以提供 bash-5.2 所需的所有符號,因此早期版本的 Readline 庫將無法正常工作。
最後對於那些有興趣能夠了解更多的人以及想要立即獲得這個新版本的人, 您可以訪問以下鏈接。
如何在Linux上獲得Bash 5.2?
在這一刻 剩下的只是等待這個新版本的Bash被合併 在Linux發行版的存儲庫中,因為它是最佳選擇。