
เมื่อไม่กี่วันที่ผ่านมาโครงการ GNU ได้ประกาศเปิดตัว Bash เวอร์ชัน 5.3 ซึ่งเป็นตัวแปลคำสั่งยอดนิยมที่ยังคงเป็นตัวเลือกเริ่มต้นในระบบปฏิบัติการ Linux ส่วนใหญ่
เวอร์ชันใหม่นี้เป็นผลงานจากการพัฒนาเกือบสามปีซึ่งไม่เพียงแต่ปรับปรุงภาษาและพฤติกรรมของเชลล์เท่านั้น แต่ยังเพิ่มคุณสมบัติใหม่ๆ เพื่อให้สอดคล้องกับมาตรฐานสมัยใหม่ เช่น C23 นอกจากนี้ยังมาพร้อมกับการเปิดตัวไลบรารี Readline 8.3 อีกด้วย
มีอะไรใหม่ใน Bash 5.3
หนึ่งในความเปลี่ยนแปลงที่โดดเด่นที่สุดใน Bash 5.3 คือการแนะนำวิธีการแทนที่คำสั่งใหม่: `${ command; }` และ `${|command;}`วิธีการเหล่านี้ช่วยให้คุณสามารถดักจับผลลัพธ์ของคำสั่งได้โดยไม่ต้องสร้างกระบวนการลูกหรือใช้ไปป์ไลน์ ซึ่งจะช่วยลดการใช้ทรัพยากรและปรับปรุงประสิทธิภาพ ผลลัพธ์สามารถจัดเก็บไว้ในตัวแปร `REPLY` ได้โดยตรง ทำให้การดักจับผลลัพธ์ทั่วไปง่ายขึ้น
อีกหนึ่งคุณสมบัติใหม่ที่เพิ่มเข้ามาใน GNU Bash 5.3 คือตัวแปร GLOBSORTซึ่งช่วยให้คุณกำหนดเกณฑ์การเรียงลำดับเมื่อขยายเส้นทางไฟล์ผู้ใช้สามารถเรียงลำดับตามชื่อ ขนาด วันที่แก้ไข และอื่นๆ ได้ โดยมีตัวเลือกทั้งแบบเรียงจากน้อยไปมากและจากมากไปน้อย
นอกจากนี้ Bash 5.3 ยังมีการปรับปรุงคำสั่งในตัวหลายคำสั่งคำสั่ง `compgen` สามารถเก็บคำแนะนำที่สร้างขึ้นในตัวแปรได้แล้ว (`-V varname`) ในขณะที่ `read` ตอนนี้มีตัวเลือก `-E` เพื่อใช้ไลบรารี Readline ร่วมกับกฎการเติมคำอัตโนมัติของ Bash คำสั่ง `source` ก็ได้รับการปรับปรุงเช่นกัน โดยตอนนี้รองรับ `-p PATH` เพื่อแก้ไขเส้นทางการค้นหา
นอกจากนี้ คำสั่ง umask ได้รับการปรับปรุงให้สอดคล้องกับข้อกำหนด POSIX อย่างสมบูรณ์และคำสั่ง printf ได้รับการปรับปรุงด้วยตัวเลือกใหม่สำหรับสตริงหลายไบต์และการแสดงอักขระและสตริงแบบอื่น
ความเข้ากันได้ของ C23 และคำอำลา K&R C
หนึ่งในความเปลี่ยนแปลงเชิงโครงสร้างที่สำคัญที่สุดคือการนำมาตรฐาน C23 มาใช้ในซอร์สโค้ดของ Bash ส่งผลให้การสนับสนุนการคอมไพล์ในโหมด "K&R C"ซึ่งเป็นเทคนิคที่มีมาตั้งแต่ยุคแรกๆ ของภาษา C ถูกลบออกไป
ในทางกลับกัน Bash 5.3 แนะนำคำสั่งโหลดได้หลายคำสั่ง เช่น:
- กิโลโวลต์: เพื่อสร้างอาร์เรย์แบบเชื่อมโยงจากข้อมูลในรูปแบบคีย์-ค่า
- สตริปไทม์: แปลงวันที่ในรูปแบบข้อความเป็นเวลา Unix
- ฟลเท็กซ์พีอาร์: ช่วยให้คุณสามารถดำเนินการเลขคณิตแบบจุดลอยตัว โดยเลียนแบบพฤติกรรมของ let
นอกจากนี้ ยังมีการเพิ่มตัวแปรไดนามิก BASH_MONOSECONDSซึ่งเป็นตัวนับเวลาของระบบแบบโมโนโทนิกมีประโยชน์สำหรับงานที่ความเสถียรเชิงเวลาเป็นสิ่งสำคัญ
ในโหมด POSIX นั้น Bash จะทำการเปรียบเทียบสตริงโดยใช้ตัวดำเนินการ < และ >โดยคำนึงถึงการตั้งค่าภาษาท้องถิ่นด้วย นอกจากนี้ยังปรับพฤติกรรมของคำสั่งต่างๆ เช่น test, trap, wait และ bind ให้สอดคล้องกับข้อกำหนดของมาตรฐานอย่างใกล้ชิด ตัวอย่างเช่น `trap -P` ช่วยให้คุณสามารถพิมพ์การกระทำของ trap สำหรับแต่ละสัญญาณ และ `wait -n` ช่วยปรับปรุงการจัดการกระบวนการที่สิ้นสุดและการแทนที่
อ่านไลน์ 8.3
ไลบรารี Readline ซึ่งเป็นคู่หูของ Bash ได้รับการอัปเดตครั้งใหญ่เช่นกัน ฟีเจอร์ใหม่ที่โดดเด่นที่สุด ได้แก่:
- ค้นหาโดยไม่สนใจตัวพิมพ์ใหญ่-เล็ก: อนุญาตให้ค้นหาในประวัติโดยไม่คำนึงถึงตัวพิมพ์ใหญ่หรือเล็ก
- การส่งออกเสร็จสมบูรณ์: ส่งออกการเติมคำที่เป็นไปได้สำหรับการประมวลผลภายนอก
- ดำเนินการคำสั่งที่ตั้งชื่อ: ดำเนินการคำสั่งที่มีชื่ออ่านจากอินพุตมาตรฐาน ซึ่งมีประโยชน์สำหรับการเขียนสคริปต์และการปรับแต่ง
- การสนับสนุนแมโครที่ได้รับการปรับปรุง ตัวแปรที่กำหนดค่าได้ใหม่ และการจัดการขนาดหน้าจอที่ดีขึ้นหลังจากการดำเนินการต่อ (SIGCONT)
การติดตั้งและ/หรืออัปเดต Bash บน Linux
สำหรับผู้ที่สนใจติดตั้งหรืออัปเดต Bash บน Linux ควรทราบว่าการติดตั้งหรืออัปเดต Bash ขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้ ด้านล่างนี้ ผมจะอธิบายวิธีการติดตั้งหรืออัปเดตบนระบบปฏิบัติการหลัก:
ในระบบที่ใช้ Debian (เช่น Ubuntu, Linux Mint)
sudo apt ติดตั้ง --only-upgrade bash
การดำเนินการนี้จะอัปเดต Bash ให้เป็นเวอร์ชันล่าสุดที่มีอยู่ในที่เก็บข้อมูลอย่างเป็นทางการ
หากคุณต้องการติดตั้งตั้งแต่เริ่มต้น (เช่น บนระบบขนาดเล็กมาก):
sudo apt ติดตั้ง bash
เกี่ยวกับการแจกจ่ายที่ใช้ Red Hat (เช่น Fedora, CentOS, RHEL)
sudo dnf update bash เพื่อติดตั้ง Bash (ถ้ายังไม่ได้ติดตั้ง):
sudo dnf ติดตั้ง bash
บน Arch Linux และอนุพันธ์ (เช่น Manjaro)
sudo pacman -Syu bash
การดำเนินการนี้จะอัปเดต Bash พร้อมกับระบบทั้งหมด หากต้องการติดตั้งเฉพาะ Bash:
sudo pacman -S bash