In the 1970s, UNIX had all official executables in
/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
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
Unfortunately, Linux distros did not follow this decision....
~/bin/for personal stuff.
/binwas merged with
/sbinwas merged with
/usr/sbin– see The Case for the /usr Merge.