Directory or fileDescription
/The slash / character alone denotes the root of the filesystem tree.
/binStands for binaries and contains certain fundamental utilities, such as ls or cp, that are needed to mount /usr, when that is a separate filesystem, or to run in one-user (administrative) mode when /usr cannot be mounted. In System V.4, this is a symlink to /usr/bin. Otherwise, it needs to be on the root filesystem itself.
/bootContains all the files needed for successful booting process. In Research Unix, this was one file rather than a directory.1 Nowadays usually on the root filesystem itself, unless the system, bootloader etc. require otherwise.
/devStands for devices. Contains file representations of peripheral devices and pseudo-devices. See also: Linux Assigned Names and Numbers Authority. Needs to be on the root filesystem itself.
/etcContains system-wide configuration files and system databases; the name stands for et cetera1 but now a better expansion is editable-text-configurations. Originally also contained “dangerous maintenance utilities” such as init,[^1] but these have typically been moved to /sbin or elsewhere. Needs to be on the root filesystem itself.
/homeContains user home directories on Linux and some other systems. In the original version of Unix, home directories were in /usr instead.2 Some systems use or have used different locations still: macOS has home directories in /Users, older versions of BSD put them in /u, FreeBSD has /usr/home.
/libOriginally essential libraries: C libraries, but not Fortran ones.1 On modern systems, it contains the shared libraries needed by programs in /bin, and possibly loadable kernel module, device drivers or binary blobs. Linux distributions may have variants /lib32 and /lib64 for multi-architecture support.
/mediaDefault mount point for removable devices, such as USB sticks, media players, etc. By common sense, the directory itself, whose subdirectories are mountpoints, is on the root partition itself.
/mntStands for mount. Empty directory commonly used by system administrators as a temporary mount point. By common sense, the directory itself, whose subdirectories are mountpoints, is on the root partition itself.
/optContains locally installed software. Originated in System V, which has a package manager that installs software to this directory (one subdirectory per package).3
/procprocfs synthetic file system showing information about processes as files.
/rootThe home directory for the superuser root - that is, the system administrator. This account’s home directory is usually on the initial filesystem, and hence not in /home (which may be a mount point for another filesystem) in case specific maintenance needs to be performed, during which other filesystems are not available. Such a case could occur, for example, if a hard disk drive suffers failures and cannot be properly mounted.
/sbinStands for “system (or superuser) binaries” and contains fundamental utilities, such as init, usually needed to start, maintain and recover the system. Needs to be on the root partition itself.
/srvServer data (data for services provided by system).
/sysIn some Linux distributions, contains a sysfs synthetic file system, containing information related to hardware and the operating system. On BSD systems, commonly a symlink to the kernel sources in /usr/src/sys.
/tmpA place for temporary files not expected to survive a reboot. Many systems clear this directory upon startup or use tmpfs to implement it.
/unixThe Unix kernel in Research Unix and System V.1 With the addition of virtual memory support to 3BSD, this got renamed /vmunix.
/usrIn the earliest versions of Unix, /usr was the directory holding user home directories; the directory name reflected that.2 By the Third Edition of Research Unix, ca. 1973, the operating system’s programs overflowed the 256K fixed-head drive containing /bin, so a /usr/bin directory was created on the disk containing /usr to hold some commands; commands and user home directories both resided on /usr.4 Additional directories, such as /usr/lib and /usr/tmp, were also created under /usr; it now holds executables, libraries, and shared resources that are not system critical, such as the X Window System, window managers, scripting languages, etc. In older Unix systems, user home directories might still appear in /usr alongside directories containing those items; some systems have moved user home directories under a directory other than /usr.
/usr/includeStores the development headers used throughout the system. Header files are mostly used by the #include directive in C language, which historically is how the name of this directory was chosen.
/usr/libStores the needed libraries and data files for programs stored within /usr or elsewhere.
/usr/libexecHolds programs meant to be executed by other programs rather than by users directly. E.g., the Sendmail executable may be found in this directory.5 Not present in the FHS until 2011;6 Linux distributions have traditionally moved the contents of this directory into /usr/lib, where they also resided in 4.3BSD.
/usr/localResembles /usr in structure, but its subdirectories are used for additions not part of the operating system distribution, such as custom programs or files from a BSD Ports collection. Usually has subdirectories such as /usr/local/lib or /usr/local/bin.
/usr/shareArchitecture-independent program data. On Linux and modern BSD derivatives, this directory has subdirectories such as man for manpages, that used to appear directly under /usr in older versions.
/varStands for variable. A place for files that might change frequently - especially in size, for example e-mail sent to users on the system, or process-ID lock files.
/var/logContains system log files.
/var/mailThe place where all incoming mail is stored. Users (other than root) can access their own mail only. Often, this directory is a symbolic link to /var/spool/mail.
/var/spoolSpool directory. Contains print jobs, mail spools and other queued tasks.
/var/srcThe place where the uncompiled source code of some programs is.
/var/tmpThe /var/tmp directory is a place for temporary files which should be preserved between system reboots.

(echo:: @ ᯤ)

Footnotes

  1. Kernighan, Brian W.; Pike, Rob (1984). The UNIX Programming Environment. Prentice-Hall. pp. 63–65. Bibcode:1984upe..book…K. ↩ ↩2 ↩3 ↩4

  2. Ritchie, Dennis. “Unix Notes from 1972”. Retrieved 7 September 2025. ↩ ↩2

  3. System V Application Binary Interface Edition 4.1 (1997-03-18) ↩

  4. M. D. McIlroy (1987). “A Research Unix reader: annotated excerpts from the Programmer’s Manual, 1971–1986” (PDF). Bell Labs. CSTR 139. ↩

  5. “Chapter 7. sendmail”. UNICOS/mp Networking Facilities Administration. Cray. Archived from the original on 9 November 2017. Retrieved 14 September 2013. ↩

  6. “fhs-spec revision 44”. Archived from the original on 2017-03-05. Retrieved 2016-07-14. ↩