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.