Linux directories
Short overview of common Linux directories and their intended uses.
/bin
Originally intended for programs that needed to be on a small root partition (/) before the larger partitions (/usr, etc.) were mounted. This is still relevalnt for embedded devices.
On regular devices, serves as a standard location for key programs like /bin/sh.
/sbin
Same as /bin, but for system management programs that are not normally ran by users.
/usr/bin
For normal user programs managed by the distribution or package manager. Any changes made here can be overwritten or deleted by the package manager.
/usr/sbin
For system management programs managed by the distribution package manager.
/usr/local/bin
For normal user programs NOT managed by the distribution package manager (e.g. locally compiled packages).
/usr/local/sbin
For system management programs NOT managed by the distribution package manager.
~/.local/bin
For programs that are available only for the current user.
/etc
For configuration files.
/opt
For "optional" software NOT managed by the distribution package manager. Unlike the regular *nix-style software where executables, libraries, and configuration files are stored in corresponding directories, software directory under /opt (e.g: /opt/myapplication) contains everything in the same directory.