Linux Directory Hierarchy

Here are the necessary information you need to get acquainted with when learning Linux.

/bin – Binaries.
/boot – Files required for booting.
/dev – Device files.
/etc – Etcctera. The name is inherited from the earliest Unixes,
which is when it became the spot to put config-files.
/home – Where Home directories are kept.
/lib – Where code libraries are kept.
/media – A more modern directory, but where removable media gets mounted.
/mnt – Where temporary file-systems are mounted.
/opt – Where opttional add-on software is installed.
This is discrete from /usr/local/ for reasons I’ll get to later.
/run – Where runtime variable data is kept.
/sbin – Where super-binaries are stores.
These usually only work with root.
/usr – Another directory inherited from the Unixes of old, it stands for “user”.
This directory should be sharable between hosts, and can be NFS mounted to multiple hosts safely.
It can be mounted read-only safely.
/var – Another directory inherited from the Unixes of old, it stands for “variable”. This is where system data that varies may be stored.
Such things as spool and cache directories may be located here.
If a program needs to write to the local file-system and isn’t serving that data to someone directly,
it’ll go here.
/srv – Stands for “serve”. This directory is intended
for static files that are served out.
/srv/http would be for static websites,
/srv/ftp for an FTP server.

/opt stands for optional (as in optional add-on packages).
/bin stands for binary (contains executables used by the OS).
/lib stands for library (contains shared libraries used by filesystem and for booting, probably used by the executables in bin)
/proc stands for processes.
/root means root user.
/home holds the home sub-directories for any non-root users.
/dev stands for device (holds special and device files).
/tmp stands for temporary.
/srv stands for serve.
/mnt stands for mount point (mount a temporary filesystem here).
/include contains #include files, i.e. header files (e.g., stdio.h).
/var stands for variable
/etc stands for etcetera

For more data on the layout of Linux file-systems, look at the Filesystem Hierarchy Standard (now at version 2.3, with the beta 3.0 version deployed on most recent distros). It does explain some of where the names came from.

Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x