Glossary

/usr

/usr is the large subtree containing most of the system's installed software. Despite the historical abbreviation of "user", it has nothing to do with user home directories (which live under /home). Under /usr you find /usr/bin and /usr/sbin (binaries), /usr/lib (libraries), /usr/include (C headers), /usr/share (architecture-independent data), /usr/local (local installs outside the package manager), and /usr/src (kernel or package sources).

Originally /usr was introduced as a second hierarchy to overflow the small root partitions of early Unix systems. The split was preserved for historical reasons: /bin held the essentials needed to boot and mount /usr, while /usr/bin held everything else. On modern systems the distinction has lost its purpose—you cannot boot without /usr anyway, because too much of the userland depends on libraries there. This has led to the usr merge, now adopted by Fedora, Debian, Arch, and most others: /bin, /sbin, and /lib become symlinks into /usr.

/usr/local is special. Traditionally it is where a sysadmin installs software by hand (e.g. ./configure --prefix=/usr/local) without conflicting with the package manager, which owns /usr proper. Packaging systems like Homebrew, Pkgsrc, and Nix use similar prefixes. Separating distribution-managed and locally installed software keeps the system easier to upgrade.

Related terms: Filesystem Hierarchy Standard

Discussed in:

Also defined in: Textbook of Linux