Please refer to the Filesystem Hierarchy Standard (FHS) for Linux for this.
/bin
: For binaries usable before the /usr
partition is mounted. This is used for trivial binaries used in the very early boot stage or ones that you need to have available in booting single-user mode. Think of binaries like cat
, ls
, etc.
/sbin
: Same, but for scripts with superuser (root) privileges required.
/usr/bin
: Same as first, but for general system-wide binaries.
/usr/sbin
: Same as above, but for scripts with superuser (root) privileges required.
if I'm writing my own scripts, where should I add these?
None of the above. You should use /usr/local/bin
or /usr/local/sbin
for system-wide available scripts. The local
path means it's not managed by the system packages (this is an error for Debian\/Ubuntu packages).
For user-scoped scripts, use ~/bin
(a personal bin folder in your home directory).
The FHS says for /usr/local
:
Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g.,
bin/
,lib/
,share/
.