Linuksowa hierarchia systemu plików

Linux Filesystem Hierarchy określa wzorcowy zestaw katalogów, które mogą się pojawiać w systemie Linux.

bin

Essential command binaries

boot

Static files of the boot loader

dev

Device files

etc

Host-specific system configuration

home

Users’ home directories

lib

Essential shared libraries and kernel modules

media

Mount point for removeable media

mnt

Mount point for mounting a filesystem temporarily

opt

Add-on application software packages

root

Home directory for root user

run

Run-time variable data

sbin

Essential system binaries

srv

Data for services provided by this system

tmp

Temporary files

usr

Secondary hierarchy

var

Variable data

Kilka lat temu uproszczono strukturę katalogów rezygnując z oddzielnych katalogów /bin, /sbin, /lib, /lib64. W ich miejsce utworzono dowiązania symboliczne do (odpowiednio) /usr/bun, /usr/sbin, /usr/lib, /usr/lib64.

Dlaczego uproszczono strukturę katalogów? Dla następujących korzyści:

  • uzyskanie zgodności z układem katalogów stosowanym w innych systemach uniksowych/linuksowych (głównie Solaris 10/11); całe oprogramowanie jest dostępne via /usr/bin/ i /usr/sbin, co ułatwia przenoszenie oprogramowania (nie trzeba martwić się ścieżkami do używanego oprogramowania)

  • ułatwienie w udostępnianiu całego oprogramowania systemowego klientom via NFS (atomowo, w trybie ro)

  • ułatwienie w aktualizacji i archiwizacji oprogramowania (różne systemy operacyjne, różne dystrybucje); archiwizacja w trybie atomowym (snapshot)

  • ułatwienie procesu paczkowania oprogramowania

  • poprawa zgodności z narzędziami GNU do budowania programów (autoconf/automake nic nie wiedzą o podziale /bin /usr/bin); portowanie z GNU do Linuksa staje się prostsze

Argumenty za i przeciw scaleniu /bin i /usr/bin: http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge.