“ s” ใน“ $ -” คืออะไร?


10

$-ปกติฉันตระหนักดีถึงเนื้อหาของ CentOS ล่าสุดที่ฉันได้รับ:

[grochmal@orion ~]$ echo $-
himBH

hmBHเป็นตัวเลือกทั้งหมดจากsetและiหมายความว่าเปลือกของฉันเป็นแบบโต้ตอบ

กระนั้นบน Arch Linux ของฉันฉันได้รับ:

[grochmal@haps ~]$ echo $-
himBHs

ฉันไม่พบสิ่งที่มีประโยชน์man bashและset -sทำให้ฉันมีข้อผิดพลาด สิ่งนั้นหมายsถึงอะไร

คำตอบ:


13

-sตัวเลือกที่เป็นจุดเริ่มต้นการโทรทุบตีด้วย-sซึ่งหมายถึง "คำสั่งที่มาจาก 'มาตรฐาน' จากคู่มือการใช้งาน.

-s ถ้าตัวเลือก -s มีอยู่หรือถ้าไม่มีข้อโต้แย้งอยู่หลังจากการประมวลผลตัวเลือกคำสั่งจะถูกอ่านจากอินพุตมาตรฐาน ตัวเลือกนี้ช่วยให้สามารถตั้งค่าพารามิเตอร์ตำแหน่งเมื่อเรียกใช้เชลล์แบบโต้ตอบ

มันง่ายมากที่จะทดสอบ:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

การเริ่มเชลล์ใหม่สำหรับเวอร์ชั่นทุบตีก่อนหน้านี้ทั้งหมดไม่ได้ตั้งค่าตัวเลือกนั้นตามค่าเริ่มต้น:

$ b32sh -li
$ echo $-
himBH

แต่มันอยู่ใน bash 4.4:

$ b44sh -li
$ echo $-
himBHs

และส่วนที่สองอธิบายว่าทำไมฉันถึงได้อยู่บน Arch ค่า CentOS ของฉันสำหรับBASH_VERSIONคือ 4.2.46 (1) - ปล่อยในขณะที่บน Arch คือค่า 4.4.5 (1) - ปล่อย
grochmal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.