In the 1970s, UNIX had all official executables in /bin
and /usr/bin
was a location beneath the users home directories (e.g. /usr/dmr
) that was available for any user to store own binaries that might have been of interest for others as well.
The result of this open /usr/bin
was a junk yard of undocumented software and so Stephen Bourne wrote a cron script that checked for new binaries every night and removed all binaries that did not have a documentation or that have been updated without updating their documentation as well.
In the late 1970s, /usr/bin
was integrated into the OS base distribution and people started to use /usr/local/bin
for the purpose of the previous open /usr/bin
.
After a while, sysadmins used /usr/local/bin
to store non-local software that was imported from the network (e.g. the USENET) and as UNIX companies did not like to repeat the same mistake as with /usr/bin
again, there was a file system hierarchy conference around 1987 where all UNIX companies agreed to give up /usr/local/bin
and to use /opt/<vendor>/bin
instead.
Unfortunately, Linux distros did not follow this decision....
/usr/sbin/
.~/bin/
for personal stuff./bin
was merged with/usr/bin
and/sbin
was merged with/usr/sbin
– see The Case for the /usr Merge./usr/local/bin
?