หลังจากเกือบ 2 ปีของการพัฒนา (ยี่สิบเดือนของการพัฒนาที่แน่นอน) การเปิดตัว เวอร์ชันใหม่ของเชลล์ GNU ทุบตี 5.2, ซึ่งเป็นการอัพเดทสาขาที่ห้า (5.x) และรุ่นนี้แก้ไขจุดบกพร่องที่โดดเด่นหลายอย่างใน bash-5.1 และแนะนำคุณสมบัติใหม่จำนวนหนึ่ง
สำหรับผู้ที่ยังใหม่กับ bash คุณควรรู้ว่านี่เป็นเชลล์เริ่มต้นบนลีนุกซ์ส่วนใหญ่
คุณสมบัติใหม่หลักของ Bash 5.2
ในเวอร์ชันใหม่นี้ที่นำเสนอจาก Bash 5.2 สังเกตว่ามีงานเขียนโค้ดใหม่เพื่อวิเคราะห์โครงสร้างการแทนที่คำสั่ง และแทนที่เอาต์พุตเมื่อรันคำสั่งอื่น เช่น "$(command)" หรือ "command" การใช้งานใหม่เรียกตัวแยกวิเคราะห์กระทิงแบบเรียกซ้ำ ซึ่งจะแทนที่การแยกวิเคราะห์เฉพาะกิจที่ใช้ในเวอร์ชันก่อนหน้า และช่วยให้ตรวจสอบไวยากรณ์ได้ดีขึ้นและตรวจจับข้อผิดพลาดทางไวยากรณ์ได้เร็วกว่ามาก
การเปลี่ยนแปลงอื่นที่โดดเด่นใน Bash 5.2 เวอร์ชันใหม่นี้คือ ปรับปรุงการแยกวิเคราะห์และการขยายตัวของดัชนีอาร์เรย์ บวกกับความสามารถในการใช้พารามิเตอร์ "@" และ "*" ในคำสั่งบิวด์อินเพื่อรีเซ็ตคีย์เป็นค่าที่กำหนดแทนการรีเซ็ตอาร์เรย์ทั้งหมด
นอกจากนี้ ยังมีการกล่าวอีกว่า เพิ่มการตั้งค่าใหม่ “patsub_replacement” เมื่อตั้งค่าแล้ว อักขระ '&' ในสตริงที่ถูกแทนที่จะถูกใช้เพื่อแทนที่ส่วนของสตริงที่ตรงกับรูปแบบที่กำหนด
tambien เน้นว่ามีกรอบใหม่สำหรับเวลารอ readline ซึ่งรวมถึงใหม่
ฟังก์ชั่นสาธารณะเพื่อตั้งค่าการหมดเวลาและดูเวลาที่เหลือก่อนที่จะหมดเวลา บวกกับมีตัวเลือกการกำหนดค่าใหม่: --with-shared-termcap-library ซึ่งบังคับให้ไลบรารี readline ที่แชร์ลิงก์ไปยังไลบรารี termcap ที่แชร์ (หรือคำสาป) /ncurses/termlib) ดังนั้นแอปพลิเคชันจึงไม่จำเป็นต้องทำ
จากการเปลี่ยนแปลงอื่น ๆ ที่โดดเด่นจาก Bash 5.2 เวอร์ชันใหม่นี้:
- จำนวนสถานการณ์ที่กระบวนการเพิ่มเติมไม่ได้ถูกขยาย ตัวอย่างเช่น การ fork จะไม่ถูกใช้อีกต่อไปเมื่อใช้โครงสร้าง "$("
- ใช้กรอบงานภายในใหม่สำหรับการคำนวณตัวจับเวลาและหมดเวลา
- ให้ความสามารถในการเปิดใช้งานในเวลาคอมไพล์ (configure --enable-alt-array-implementation) การใช้งานอาร์เรย์สำรองที่ได้รับการปรับให้เหมาะสมสำหรับความเร็วสูงสุดในการเข้าถึงโดยใช้หน่วยความจำที่เพิ่มขึ้น
- การใช้งานเพิ่มเติมของ $'…' และ $»…» การแทนที่ที่ใช้ในการโลคัลไลเซชัน
- 'printf' มีตัวระบุรูปแบบใหม่ '%Q' ซึ่งทำหน้าที่เหมือน "%q" แต่ใช้ความแม่นยำที่ระบุใดๆ กับอาร์กิวเมนต์ดั้งเดิมโดยไม่มีเครื่องหมายอัญประกาศ จากนั้นจึงใส่เครื่องหมายอัญประกาศและส่งออกผลลัพธ์
- เพิ่มการตั้งค่า noexpand_translations และตัวเลือกบิลด์ "configure --enable-translatable-strings" เพื่อควบคุมว่าจะรองรับ $"..." หรือไม่ เปิดใช้งานการแทนที่ที่แปลเป็นภาษาท้องถิ่นได้
- ในโหมด posix ตอนนี้ `printf' สามารถใช้ long double สำหรับตัวระบุการแปลงทศนิยมได้ หากมี มิฉะนั้นจะต้องเป็นสองเท่า
- เพิ่มและเปิดใช้งานโดยค่าเริ่มต้น "globskipdots" เพื่อหลีกเลี่ยง "." และ ".." เมื่อขยายเส้นทาง..
ในเวลาเดียวกันไลบรารี readline 8.2 ได้รับการเผยแพร่ซึ่งใช้ใน bash เพื่อจัดระเบียบการแก้ไขบรรทัดคำสั่ง
สุดท้ายนี้ขอบอกว่า bash เวอร์ชันนี้สามารถเชื่อมโยงกับไลบรารี Readline ติดตั้งแล้วแทนที่จะเป็นเวอร์ชันส่วนตัวใน lib/readline หากคุณต้องการ สิ่งสำคัญคือต้องพูดถึงว่าเวอร์ชันของ อ่านไลน์-8.1 และรุ่นที่ใหม่กว่าสามารถให้สัญลักษณ์ทั้งหมดที่ bash-5.2 ต้องการ ดังนั้นไลบรารี Readline เวอร์ชันก่อนหน้าจะไม่ทำงานอย่างถูกต้อง
สุดท้ายนี้ สำหรับผู้ที่สนใจอยากทราบข้อมูลเพิ่มเติม และผู้ที่ต้องการรับเวอร์ชันใหม่นี้ตอนนี้ คุณสามารถเยี่ยมชมลิงค์ต่อไปนี้
จะรับ Bash 5.2 บน Linux ได้อย่างไร
ในขณะนี้ ยังคงต้องรอให้ Bash เวอร์ชันใหม่นี้รวมเข้าด้วยกัน ภายในที่เก็บของลีนุกซ์ดิสทริบิวชันเนื่องจากเป็นตัวเลือกที่ดีที่สุด