ฉันทำงานในสภาพแวดล้อมที่ค่อนข้างหลากหลายซึ่งฉันอาจใช้ Bash รุ่นต่างๆในโหนด HPC, VM หรือเวิร์กสเตชันส่วนตัวของฉัน เนื่องจากฉันใส่สคริปต์การเข้าสู่ระบบใน repo Git ฉันต้องการใช้ (ish) เดียวกัน.bashrc
ทั่วกระดานโดยไม่ต้อง "ถ้าโฮสต์นี้แล้ว ... " - ประเภทความยุ่งเหยิง
ผมชอบการทำงานเริ่มต้นของการทุบตี≤ 4.1 ที่ขยายcd $SOMEPATH
เข้าไปในcd /the/actual/path
เมื่อกดTabคีย์ ในทุบตี 4.2 และสูงกว่าที่คุณจะต้องshopt -s direxpand
เปิดใช้งานลักษณะการทำงานนี้และที่ไม่ได้เป็นใช้ได้จนกว่า 4.2.29 นี่เป็นเพียงตัวอย่างเดียว shopt
ตัวเลือกอื่นที่เกี่ยวข้องอาจเป็นไปได้complete_fullquote
(แม้ว่าฉันไม่ทราบว่าสิ่งที่มันทำ) อาจมีการเปลี่ยนแปลงพฤติกรรมเริ่มต้นที่ v4.2
แต่direxpand
ไม่ได้รับการยอมรับจากรุ่นก่อนหน้าทุบตีและถ้าผมพยายามที่จะshopt -s direxpand
อยู่ในของฉัน.bashrc
ที่ส่งผลให้เกิดข้อผิดพลาดถูกพิมพ์ไปยังคอนโซลครั้งที่ผมเข้าสู่โหนดกับเก่าทุบตีทุก:
-bash: shopt: direxpand: invalid shell option name
สิ่งที่ฉันต้องการจะทำคือล้อมรอบเงื่อนไขshop -s direxpand
เพื่อเปิดใช้งานตัวเลือกนั้นใน Bash> 4.1 อย่างแข็งแกร่งโดยไม่ต้อง chashing เวอร์ชันเก่าของ Bash ( กล่าวคือไม่ใช่แค่เปลี่ยนเส้นทางเอาต์พุตข้อผิดพลาดไป/dev/null
)
.bashrc
มันได้และนั่นคือวิธีการแก้ปัญหาที่ผมจบลงไปด้วยในตัวฉันเอง ฉันยังต้องการบันทึกวิธีการใช้$BASH_VERSINFO
เพื่อสอบถามเชลล์รุ่นหลัก / รุ่นรองสำหรับการแก้ไขของฉันเองซึ่งเป็นสาเหตุที่ฉันโพสต์คำตอบของฉันเอง :)