파일 시스템 계층구조 표준(Filesystem Hierachy Standard, FHS)는 리눅스운영 체제의 주 디렉토리를 정의한다. 대부분의 경우, 이는 전통적인 BSD 파일 시스템 계층구조 표준이다.
FHS는 휴렛 팩커드, 레드햇, IBM, 델과 같은 주요 소프트웨어와 하드웨어 공급 업체로 이루어진 비영리 조직인 리눅스 재단에 의해 유지되고 있다.
대부분의 리눅스 배포판은 FHS를 따르며 그들의 정책에 FHS를 준수할 것을 명시한다.[2][3][4][5] 그러나, 현재 대부분의 배포판은, 자유 표준 그룹의 회원에 의해 개발된 것까지 포함하여, 제안한 표준을 완전히 따르지는 않는다.[출처 필요]
FHS가 생성되었을 때, 다른 유닉스 (혹은 유닉스 계열) 운영 체제는 이미 그들만의 고유한 표준이 있었으며, 특히 파일 시스템 레이아웃에 대한 하이어(7) 설명[6]이 유닉스 버전 7(1979년) 혹은 썬 OS 파일시스템(7)[7]최근 솔라리스 파일 시스템(5).[8]부터 존재하였다. 예를 들어, 맥 OS X는 기존 유닉스 디렉토리 구조에 /Library, /Applications, 그리고 /Users와 같이 더 길고 직관적인 이름을 사용한다.
최근의 리눅스 배포판은 기존의 유닉스 및 유닉스 계열 운영 체제의 커널 소스 트리 상에서 심볼릭 링크로 /sys를 사용하는 것처럼[출처 필요] 시스템에 연결된 장치의 수정을 저장하고 허용하는 가상 파일 시스템(proc의 procfs와 같은 sysfs)처럼 /sys와 같은 구조를 쓴다.
GoboLinux나 Syllable Server과 같은 일부 리눅스 시스템은 FHS와 완전히 다르게 접근했다.[출처 필요]
역사
계층 구조 파일 시스템 표준의 개발 과정은 1993년 8월에 리눅스 파일과 디렉토리 구조를 재구조화하려는 노력에서 시작되었다. FSSTND(FileSystem STaNDard), 즉 리눅스 운영 체제의 파일 시스템 계층구조 표준은, 1994년 2월 14일에 발표되었다. 그 이후 버전은 1994년 10월 9일과 1995년 3월 28일에 나왔다.[9]
1996년 초에, Linux뿐만 아니라, 다른 유닉스 계열 운영 체제도 다루고 있는 FSSTND의 포괄적인 버전을 개발하는 것의 목적은 BSD 개발 커뮤니티의 구성원의 도움으로 채택되었다. 결과적으로, 유닉스 계열 시스템을 일반화하는 문제에 초점을 맞추어 함께 노력하게 되었다. 이 범위의 확대를 인정하여, FSSTND이라는 이름은 FHS로 바뀌었다.
FHS에서는 비록 그것이 다른 물리적 장치에 저장되어 있다 하더라도 모든 디렉토리가 루트 디렉토리 "/"의 하위 디렉토리다. 이들 중 일부 디렉토리가 설치된 X 윈도 시스템과 같은 특정 서브시스템에 의존하든 아니든 유닉스 시스템상에 존재할 수도 있고 그렇지 않을 수도 있음에 주목하라.
모든 유닉스 종류의 운영 체제에 이 디렉토리들 중 대부분이 존재하며, 일반적으로 같은 용도로 사용되지만, 여기에 있는 설명은 FHS에 사용되는 것이며, 리눅스 이외의 플랫폼에서는 꼭 지켜야 하는 것은 아니다.
이름 자체의 의미에 대한 논쟁이 있었다. 벨 연구소에서 나온 유닉스 구현에 대한 초기 버전 문서에서는, /etc는 et cetera를 의미한다고 하였는데[23], 역사적으로 이 디렉토리는 다른 어디에도 속하지 않는 모든 것들을 모아놓는 곳이었다.(그러나, FHS는 /etc를 정해진 설정 파일을 저장하는 곳으로 한정하였고 바이너리는 들어갈 수 없도록 했다).[24] 초기 문서의 출판 이후, 디렉토리 이름은 다양한 방법으로 재 해석되어 왔다. 최근에는 "Editable Text Configuration"이나 "Extended Tool Chest"와 같은 말의 약어로 풀이되었다.[25]
↑SuSE Linux Enterprise Server Administration, Novell authorized courseware, by Jason W. Eckert, Novell; Course Technology, 2006; ISBN1-4188-3731-8, 9781418837310
↑역사적으로 그리고 엄격히 표준에 따라 말하자면, /usr/local/은 (네트워크를 통해 마운트할 수 있는 /usr/와 달리) 로컬 호스트에 저장되어야 하는 데이터다. 대부분의 경우 /usr/local/은 그것들은 표준 운영 체제 배포판의 일부가 아닌 소프트웨어/데이터 설치에 쓰인다. (이 경우, /usr/는 소프트웨어/데이터의 표준 운영 체제 배포판 부분만 포함한다.)