เพราะเหตุใด 'umount' จึงไม่สะกด 'unmount'


64

ผมสงสัยว่าถ้ามีเหตุผลทางประวัติศาสตร์หรือการปฏิบัติใด ๆ ว่าทำไมคำสั่งไม่ได้umountunmount

คำตอบ:


79

วันนี้ตลอดทางกลับไปที่รุ่นแรกของระบบปฏิบัติการยูนิกซ์ที่ทั้งหมดชื่อไฟล์มาตรฐานยาวเท่านั้นที่มากที่สุด 6 ตัวอักษร (คิดว่าpasswd) แม้ว่ารุ่นนี้ได้รับการสนับสนุนไอกรน8 ตัวอักษรในชื่อไฟล์ คำสั่งส่วนใหญ่มีไฟล์ต้นฉบับที่เกี่ยวข้องซึ่งลงท้ายด้วย.c(เช่นumount.c) ซึ่งเหลือเพียง 6 ตัวอักษรสำหรับชื่อฐาน

ข้อ จำกัด แบบ 6 อักขระอาจเป็นแบบโฮลด์จากเวอร์ชันการพัฒนาก่อนหน้านี้หรือสืบทอดจากระบบ IBM ปัจจุบันที่มีข้อ จำกัด แบบอักขระ 6 ตัว (การใช้งานในช่วงต้นของ C มีขีด จำกัด 6 ตัวอักษรสำหรับตัวระบุ - ตัวระบุที่ยาวกว่านั้นได้รับการยอมรับ แต่คอมไพเลอร์มองที่ตัวอักษร 6 ตัวแรกเท่านั้นfoobar1และfoobar2เป็นตัวแปรเดียวกัน)

(ฉันคิดว่าฉันจำumountหน้าคนที่ระบุการสะกดว่าเป็นจุดบกพร่องที่ไม่ทราบที่มา แต่ตอนนี้ฉันหาไม่พบ)


21
6 ชื่อคำสั่งอักขระ + .c(หรือ.s) นามสกุล = 8 ชื่อไฟล์ จำกัด ตัวอักษร
geekosaur

@geekosaur: อ่าใช่ไฟล์ต้นฉบับ ถ้าคุณเขียนคำตอบฉันจะลบของฉัน
Gilles

5
เพิ่มเพียงแค่ใส่คำอธิบายประกอบหากคุณต้องการ
geekosaur

@geekosaur: ฉันคิดว่าหน้าคนเป็นอย่างดี แต่ V1 ไม่ได้มีคำสั่ง man (และหนึ่งในหน้าคนที่เรียกว่าdirectoryซึ่งยังไม่พอดี) ดังนั้นฉันจึงสงสัยว่าทำไมpasswdถูกตัดเหลือ 6 ตัวอักษร (ยังไม่มีpasswdคำสั่ง แต่อย่างใด/etc/passwd)
Gilles

2
อาจเป็นเพราะคำต่อท้ายภาษากรีกซึ่งหมายความว่า "ไม่" ซึ่งจะอธิบายด้วยurandom
Anthony Garcia

8

ดูเหมือนว่ามีข้อมูลผิดพลาดอยู่ที่นี่มาระยะหนึ่งแล้ว

เหตุผลส่วนใหญ่สำหรับคำสั่งที่มีชื่อย่อเป็นเพราะมันดังมาจากชื่อของสายระบบที่จะใช้:umount umount()

เหตุผลที่เป็นไปได้ที่การเรียกระบบ "unmount" ที่มีชื่อumount()นั้นเนื่องจากตัวเชื่อมโยงแรก ๆ จะจำกัดความยาวของตัวระบุภายนอกให้เหลือเพียง 6 ตัวอักษร (เพียงแค่หนึ่งกรณี) ในระบบบางประเภท (และทำให้รู้สึกถึงความเข้ากันได้ ในขณะนั้น) และ "umount" เป็นรูปแบบเชิงตรรกะของตัวย่อสำหรับ "unmount" ดูหน้า 179 ของภาษาการเขียนโปรแกรม Cครั้งแรกเพื่อดูรายการคุณลักษณะของตัวระบุภายนอกของระบบที่น่าสนใจต่าง ๆ ณ เวลาที่เผยแพร่

โปรดทราบว่าคอมไพเลอร์ C ต้น ๆ ถือว่าอักขระ 8 ตัวแรกของตัวระบุสำคัญ แต่อนุญาตให้ตัวระบุยาวขึ้น (K&R หน้า 33)

โปรดสังเกตว่าความยาวของตัวระบุในตารางสัญลักษณ์ไม่มีอะไรเกี่ยวข้องกับความยาวของชื่อไฟล์อย่างน้อยไม่ได้อยู่ในยูนิกซ์ (ตารางสัญลักษณ์ Unix ตั้งแต่ V1 มี 8 ตัวอักษรสำหรับตัวระบุแม้ว่ามันจะถูกบันทึกไว้ในคู่มือ V1 ที่ผู้ประกอบ" สร้างสัญลักษณ์ไม่เกิน 7 ไบต์ " )


-1

ด้วยเหตุผลเดียวกันการcreatโทรของระบบไม่ถูกสะกดcreate?

https://stackoverflow.com/questions/1713457/what-did-ken-thompson-mean-when-he-said-id-spell-create-with-an-e


4
Nope ความเสียใจในการอ้างอิงที่คุณอ้างถึงเป็นเพราะพวกเขาสามารถเพิ่ม 'e' ได้แม้จะมีการจำกัดความยาวของอักขระ 6 ตัวในคำตอบอื่น ไม่มีเหตุผลที่ดีจริงๆที่จะถูกตัดทอน
Warren Young

ฉันคาดเดาว่ามันเป็นประเพณีที่จะตัดทอนตัวอักษรถ้าคุณทำได้
Shadur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.