เหตุใด / etc / fstab จึงไม่ใช้ XML หรือ JSON


22

นี่เป็นคำถามทั่วไปเกี่ยวกับการเขียนโปรแกรม Linux / แต่ฉันเขียนโปรแกรมมาระยะหนึ่งแล้วและฉันคุ้นเคยกับการใช้รูปแบบเช่นXMLหรือJSONในไฟล์ใด ๆ ที่ใช้เพื่อวัตถุประสงค์ในการกำหนดค่า

เมื่อใช้ใหม่กับ Linux ฉันรู้ว่าไฟล์กำหนดค่าแรกที่ฉันชนเข้ากับ ( /etc/fstab) ใช้รูปแบบตารางบางประเภท ดังนั้นทำไมไม่ใช้ XML หรือ JSON


7
จะเกิดอะไรขึ้นถ้าเรามีห้องสมุดแยก XML ใน/usr/lib/libxml.soและ/usrแยกพาร์ติชัน? เพื่อแยก/etc/fstabระบบจะต้องติดตั้ง/usrz in order to load libxml , but to do so it would have to parse / etc / fstab` เพื่อให้ทราบว่าระบบไฟล์ใดที่จะเมานต์ เพื่อหลีกเลี่ยงปัญหานี้ตัวแยกวิเคราะห์ XML อาจจะต้องเป็นส่วนหนึ่งของเคอร์เนลซึ่งไม่ได้ฟังดูเหมือนเป็นแนวคิดที่ยอดเยี่ยม
el.pescado

4
@ V0R73X หากคุณรู้สึกว่าคำถามนี้เป็นคำถามทั่วไปของ Linux มีไซต์สแต็กอีกไซต์หนึ่งชื่อUNIX & Linux Stack Exchangeunix.stackexchange.com ทั้งสองอาจจะตกลงและมีคำตอบอยู่ที่นี่แล้ว แต่เพิ่งจะทิ้งอนาคตไว้
trysis

8
XML และสิ่งที่ชอบนั้นไม่ใช่รูปแบบที่ดีกว่าเสมอไป ตารางเป็นตารางและควรเก็บไว้เช่นนี้ ในความเป็นจริงบางคนคิดว่า XML นั้นไม่ดีสำหรับอะไรplus.google.com/+LinusTorvalds/posts/X2XVf9Q7MfV
alfC

2
ไม่ควรใช้ JSON สำหรับไฟล์การกำหนดค่า ไม่สนับสนุนความคิดเห็นซึ่งจำเป็นสำหรับการอธิบายตัวเลือกการกำหนดค่าและสำหรับการลองสิ่งต่าง ๆ โดยการแสดงความคิดเห็นในส่วนของการกำหนดค่า
artbristol

2
XML เป็นรูปแบบการขนส่งเอกสารไม่ใช่รูปแบบไฟล์กำหนดค่า
Matthew Ife

คำตอบ:


82

/etc/fstab เก่ากว่า XML และ JSON มากและเนื่องจากโปรแกรมจำนวนมากใช้การเปลี่ยนรูปแบบของมันจะเป็นฝันร้าย

นอกจากนี้ /etc/fstabจะต้องมีการแยกวิเคราะห์ก่อนที่จะมีระบบการทำงานตามที่ใช้ในการติดตั้งระบบไฟล์ที่จำเป็นทั้งหมด ดังนั้นรูปแบบของ/etc/fstabควรเรียบง่ายที่สุดเท่าที่จะเป็นไปได้เนื่องจาก parser ไม่ควรพึ่งพา libs ภายนอกใด ๆ

การแยกวิเคราะห์ XML ค่อนข้างยากและคุณต้องการหลีกเลี่ยงหากคุณไม่สามารถส่งผ่าน libs ภายนอกได้ JSON ง่ายขึ้นเล็กน้อย แต่ก็ค่อนข้างยาก

ความหมายของ/etc/fstabค่อนข้างง่ายพวกเขาไม่รวมโครงสร้างข้อมูลใด ๆ ที่เหมือนต้นไม้หรือสิ่งแฟนซีอื่น ๆ สิ่งที่คุณต้องมีคือบันทึกประกอบด้วยค่าหกค่า

ค่าที่คั่นด้วย Whitepace นั้นดีพอสำหรับสิ่งนั้นและง่ายต่อการวิเคราะห์แม้ว่าสิ่งที่คุณมีคือ lib มาตรฐาน C

ดังนั้นจึงไม่มีเหตุผลที่จะใช้ JSON, XML หรืออะไรที่คล้ายกัน


ฟิลด์ที่คั่นด้วยสีขาวนั้นเพียงพอสำหรับสิ่งที่ fstab ต้องทำ ไม่ต้องการทำสิ่งที่ซับซ้อนมากขึ้นเพียงเพื่อทำมัน
Michael Martinez

CSV จะง่ายขึ้นและง่ายยิ่งขึ้น
เลื่อน

3
@ArtB ทำไมคุณถึงคิดว่าการเปลี่ยนตัวคั่นจะเปลี่ยนความซับซ้อนของการแยกวิเคราะห์ไฟล์?
Dan Neely

ทั้งนี้ขึ้นอยู่กับกฎสำหรับการอ้างอิงการหลบหนี ฯลฯ CSV อาจแยกวิเคราะห์ได้ง่ายขึ้นเล็กน้อยเนื่องจากตัวคั่นจะเป็นอักขระตัวเดียวเสมอแทนที่จะเป็นตัวคั่นความยาวผันแปรที่ใช้ในปัจจุบัน แต่รูปแบบปัจจุบันช่วยให้มนุษย์สามารถอ่านได้ดีขึ้นซึ่งเป็นค่าที่สำคัญเช่นกัน
Florian Diesch

32

คุณควรอ่านอีริคเรย์มอนด์ศิลปะของ Unix Programmingบางครั้ง คุณดูเหมือนจะสมมุติว่าผู้ออกแบบ Unix จะใช้ XML สำหรับ/etc/fstabพวกเขาหากพวกเขารู้ ในทางตรงกันข้ามแม้ XML โดยเฉพาะไม่ได้รับการคิดค้นพวกเขาค่อนข้างตระหนักของรุ่นก่อนที่คล้ายกันและจงใจ/etc/fstabปฏิเสธพวกเขาสำหรับแฟ้มการกำหนดค่าเช่น

การอ้างอิงจากส่วนย่อยของเขาบน XML :

XML เหมาะอย่างยิ่งสำหรับรูปแบบข้อมูลที่ซับซ้อน (การเรียงลำดับของสิ่งต่าง ๆ ซึ่งประเพณี Unix แบบโรงเรียนเก่าจะใช้รูปแบบ stanza RFC-822 เหมือน) แม้ว่า overkill สำหรับคนที่ง่ายกว่า มันเหมาะสมอย่างยิ่งสำหรับรูปแบบที่มีโครงสร้างซ้อนกันหรือเกิดซ้ำที่ซับซ้อนของการเรียงลำดับที่ metaformat RFC 822 ไม่จัดการได้ดี

และไกลออกไป:

ปัญหาที่ร้ายแรงที่สุดของ XML คือมันใช้งานไม่ได้กับเครื่องมือ Unix แบบดั้งเดิม ซอฟต์แวร์ที่ต้องการอ่านรูปแบบ XML จำเป็นต้องมีตัวแยกวิเคราะห์ XML นี่หมายถึงโปรแกรมขนาดใหญ่และซับซ้อน นอกจากนี้ XML นั้นค่อนข้างใหญ่ มันอาจเป็นเรื่องยากที่จะเห็นข้อมูลท่ามกลางมาร์กอัปทั้งหมด

ปรัชญา Unix คือการทำให้การกำหนดค่าสคริปต์ง่ายและมนุษย์อ่านได้ทุกที่ที่เป็นไปได้ คุณควรจะสามารถประมวลผลไฟล์กำหนดค่าด้วยเครื่องมือเช่น awk, grep, sed, tr และ cut และแยกวิเคราะห์ไฟล์เหล่านั้นในภาษาสคริปต์โดยไม่ต้องมีไลบรารีขนาดใหญ่ นี่เป็นเหตุผลใหญ่ที่อยู่เบื้องหลังความสำเร็จของ Unix และไม่ควรมองข้าม

แม้ว่า Eric Raymond จะชื่นชม XML สำหรับความสามารถในการจัดการ "รูปแบบที่มีโครงสร้างซ้อนกันหรือเรียกซ้ำได้" /etc/fstabก็ไม่จำเป็นต้องมีสิ่งเหล่านี้ดังนั้นจึงเลือกรูปแบบไฟล์ที่ง่ายที่สุดเท่าที่จะทำได้

ดังนั้นแม้ว่า XML จะมีการใช้งานอย่างแน่นอน แต่คุณอาจต้องการพิจารณาว่าโปรแกรมเมอร์ที่ฉลาดที่สุดในโลกซึ่งเป็นผู้บุกเบิกภาคสนามนั้นอาจรู้ว่าพวกเขากำลังทำอะไรอยู่ บางที XML อาจไม่เหมาะสมกับไฟล์กำหนดค่าของคุณเสมอไป


18

เหตุผลหลักที่ฉันสามารถคิดตอนนี้คือ:


4
คำตอบนี้ไม่ได้แสดงว่าfstabไฟล์ / ฟอร์แมทนั้นเก่าเท่าmountซึ่งคุณดูเหมือนจะบอกเป็นนัยเท่านั้น ตามที่man fstab" บรรพบุรุษของรูปแบบไฟล์ fstab นี้ปรากฏใน 4.0BSD " (วลีBSDมัน " รูปแบบไฟล์ fstab ปรากฏใน 4.0BSD ") 4.0BSD ได้รับการปล่อยตัวใน1980
Daniel Beck

@DanielBeck ดังนั้นการเดาของฉันจึงเป็นเรื่องจริงที่โชคดีก่อนปี 1985
Radu Rădeanu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.