/ etc / fstab에서 XML 또는 JSON을 사용하지 않는 이유는 무엇입니까?


22

이것은 일반적인 Linux / 프로그래밍 질문과 비슷하지만 한동안 프로그래밍 해 왔으며 구성 목적으로 사용되는 모든 파일에서 XML 또는 JSON 과 같은 형식을 사용하는 데 익숙합니다.

리눅스를 처음 접했을 때 ( /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 Exchange하면 unix.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파서는 외부 라이브러리에 의존해서는 안되므로 형식은 가능한 한 단순해야합니다.

XML 파싱은 매우 어렵고 외부 라이브러리를 릴레이 할 수 없다면 실제로 피하고 싶습니다. JSON은 조금 더 쉽지만 여전히 어렵습니다.

의 의미 /etc/fstab는 매우 간단하며 트리와 같은 데이터 구조 나 다른 멋진 것들을 포함하지 않습니다. 6 개의 값으로 구성된 레코드 만 있으면됩니다.

Whitepace로 분리 된 값은 이것으로 충분하며 C 표준 라이브러리 만 있으면 파싱하기 쉽습니다.

따라서 JSON, XML 또는 이와 유사한 것을 사용할 이유가 없습니다.


흰색으로 구분 된 필드는 fstab이 수행해야 할 작업에 충분합니다. 단순히하기 위해 일을 더 복잡하게 만들고 싶지는 않습니다.
Michael Martinez

CSV는 훨씬 더 간단하고 쉬울 것입니다
Sled

3
@ArtB 왜 구분자를 변경하면 파일 구문 분석의 복잡성이 변경 될 것이라고 생각하십니까?
Dan Neely

인용, 이스케이프 등의 규칙에 따라 구분 기호는 현재 사용되는 가변 길이 구분 기호 대신 항상 하나의 문자이므로 CSV를 구문 분석하는 것이 조금 더 쉽습니다. 그러나 현재 형식은 사람의 가독성을 높이는 데 중요한 가치이기도합니다.
Florian Diesch

32

Eric Raymond의 The Art of Unix Programming을 언젠가 읽어야 합니다. 유닉스 디자이너가 XML을 /etc/fstab알고 있다면 XML을 사용했을 것이라고 가정하는 것 같습니다 . 반대로 XML은 특별히 발명되지는 않았지만 유사한 선행 작업을 잘 알고 있었으며 의도적으로 구성 파일에 대해 거부했습니다 /etc/fstab.

XML에 대한 그의 하위 섹션에서 인용 :

XML은 복잡한 데이터 형식 (구식 Unix 전통이 RFC-822와 같은 스탠자 형식을 사용하는 종류)에 적합하지만 간단한 형식에는 무리가 있습니다. RFC 822 메타 포맷이 제대로 처리하지 않는 복잡한 중첩 또는 재귀 구조의 형식이있는 형식에 특히 적합합니다.

그리고 더 아래로 :

XML의 가장 심각한 문제는 전통적인 유닉스 도구와 잘 어울리지 않는다는 것입니다. XML 형식을 읽으려는 소프트웨어에는 XML 파서가 필요합니다. 이것은 부피가 크고 복잡한 프로그램을 의미합니다. 또한 XML 자체는 다소 부피가 크다. 모든 마크 업 중에 데이터를보기가 어려울 수 있습니다.

유닉스 철학은 구성이 가능하면 스크립트를 쉽게 작성하고 사람이 읽을 수있게 만드는 것입니다. awk, grep, sed, tr 및 cut과 같은 도구를 사용하여 구성 파일을 처리하고 큰 라이브러리없이 스크립트 언어로 쉽게 구문 분석 할 수 있어야합니다. 이것이 유닉스 성공의 큰 이유이며 과소 평가해서는 안됩니다.

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.