There’s a simple, historic reason why we have /bin/ and /usr/bin/
I’d half wondered for a while why many of the directories in the root filesystem (
/) of a Linux installation are also to be found in
/usr. Recent convention implies that ‘usr’ stands for “User System Resources” but this is really only a sort of backronym.
There are executable files and libraries in
/lib/, for example, but also in
/usr/lib/. Why? Regardless of what people might tell you today, the answer lies in the history of Unix (upon which Linux is based, of course). Created in the late 1960s / early 1970s on Digital PDP machines with limited disk space, the original Unix operating system binaries were placed on the root filesystem (mounted at
/), with e.g. executables, libraries and configuration files split across
/etc/ directories respectively.
Separate from the root filesystem was another filesystem (on a separate disk) for users’ home directories. This was
/usr/ - yes, short for “user(s)”.
As the Unix system grew, the space on the root filesystem disk eventually ran out, and a decision was made to move some of the executable and library content over to the other disk that was mounted on
/usr/. It made sense to replicate the names of the directories on that other disk, names which therefore became
/usr/lib/ because of the relation to where that filesystem was mounted.
Over time the place for the users’ home directories moved from
/usr/ content eventually lost any semblance of user-specific focus.
A bonus, related thing I learned fairly recently is that the “s” in
sbin (which also can be found in both the filesystems mounted on root (
/usr/) stands for “system” denoting that the content is only executable by the root user.