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./binwas merged with/usr/binand/sbinwas merged with/usr/sbin– see The Case for the /usr Merge.~/.local/bin