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/
. – Hello71 Apr 25 '11 at 20:47~/bin/
for personal stuff. – Calmarius May 12 '13 at 16:01/bin
was merged with/usr/bin
and/sbin
was merged with/usr/sbin
– see The Case for the /usr Merge. – Piotr Dobrogost Feb 11 '15 at 13:02/usr/local/bin
? – Pacerier Jul 20 '19 at 06:51~/.local/bin
– Aaron Franke Jan 23 '21 at 17:07