Some (most?) Linux distributions have followed Solaris’ lead, and put all of /bin into
/usr/bin, and /sbin into /usr/sbin, and then symlinked /bin to /usr/bin (and /sbin to
/usr/sbin) to make everything effectively available in both locations.
Some rationale here:
https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
<https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/>
Most (all?) Linux distributions never followed the "should be static, needed for boot
to runlevel 1", logic for /bin & /sbin anyway, so the locations were largely
based on a perception of traditional or most common location anyway. sh was thus in /bin,
while env was in /usr/bin, for example.
d
Here is how I understand the current system is
intended to work:
1. /sbin for binaries for use by root that must be available before the system is fully
brought up (and for an emergency copy of the Bourne shell), which should all be linked
static.
2. /bin for binaries for use by all users that must be available before the system is
fully brought up. These may be linked dynamic.
3. /lib for libraries which are needed for binaries in /bin to work, and for kernel
plugin modules in /lib/modules.
4. /usr/sbin for other binaries in the base system to be available to root only.
5. /usr/bin for other binaries in the base system to be available to all users.
6. /etc for global configuration files used by the kernel and the base OS.
7. /opt/PACKAGE contains a full bin, etc, lib etc. folder tree for every non-base package
(I would put almost everything here, including X Window in /opt/X11/bin etc.).
8. /home as the base for all user folders.
(Scripts and binaries are not differentiated in this system.)
I think I would be prone to do a cleanup of the system to isolate everything into some
form of the above. Just my opinion.
-uso.