Frequently Asked Question

What is /usr actually for if it's not user data?

/usr is the secondary hierarchy: it holds the great majority of installed software; /usr/bin for general user programs, /usr/sbin for non-essential admin tools, /usr/lib for the shared libraries those programs need, /usr/include for C header files, /usr/share for architecture-independent data like manual pages and icons, and /usr/local for software installed by the administrator outside the package manager. Despite the name (which originally meant "user", as in /usr/ken for Ken Thompson's home directory), it has not held user data for half a century.

The FHS describes /usr as static and shareable: nothing here changes during normal operation, and the same /usr could in principle be mounted on many identical machines over the network. That property is exploited by read-only embedded systems, by atomic updates in Fedora Silverblue and openSUSE MicroOS, and by container images where most of the immutable parts of the userspace live under /usr and the configuration sits under /etc.

Video

Further reading and video