From: Michael K. Johnson (johnsonm@lars.acc-admin.stolaf.edu)
Date: 09/30/92


From: johnsonm@lars.acc-admin.stolaf.edu (Michael K. Johnson)
Subject: Re: Official version?
Date: Wed, 30 Sep 1992 21:09:48 GMT


   So, is the official directory structure decided yet?
   Can we have the results of standardizing group (which now is
   non-active)?
   What they made?
   Did they just waste time?

   Juhana Kouhia

Well, since you ask, I will post the man page that I created. This is
the latest version of the standard.

michaelkjohnson

========8<========/usr/man/man7/directories.7
.\" This file Copyright 1992 Michael K. Johnson (johnsonm@stolaf.edu)
.\" It may be distributed under the GNU Public License, version 2, or
.\" any higher version. See section COPYING of the GNU Public license
.\" for conditions under which this file may be redistributed.
.TH DIRECTORIES 7 "15 September 1992" "Cohesive Systems" "Linux Programmer's Manual"
.SH NAME
directories \- descriptions of the recommended directory structure

.SH DESCRIPTION
The following was submitted by Alan Clegg (abc@concert.net) on behalf
of the Linux-Standards list as the standard for directory file structure
under Linux. This man page tracks
.B
Revision 1.2
of the directory file structure standard.
.PP
Complete implementation of this file structure is completely
voluntary, and will not be enforced, but is recommended. This
specification is released as a guideline for people porting and
writing software for the Linux Operating System to allow easy software
installation, upgrade, and tailoring on already installed systems.

.SH "DIRECTORY STRUCTURE"
.BR / " Root Directory:"
.TP 0.5i
.I Files:
.I None defined by spec.
.TP 0.5i
.I Directories:
bin dev etc home lib mnt usr
.TP 0.5i
.I Rationale:
The root directory should not be cluttered with files or directories,
and should contain no user programs.
.PP
.BR /bin " Directory:"
.TP 0.5i
.I Files:
sh init mount umount dd cat ls fsck
.I and as needed.
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
The /bin directory should contain programs that are vital to the
restoration of other file systems in the case of a corrupting crash.
No executable in /bin should require any other file system to be
mounted to execute correctly.
.PP
.BR /dev " Directory:"
.TP 0.5i
.I Files:
.I Device files.
.TP 0.5i
.I Directories:
.I None defined by spec.
It has been highly recommended by Linus and others that none be used.
.TP 0.5i
.I Rationale:
Standard UNIX device files. This directory should contain device
entries for all devices that are supported in the standard kernel,
even if the hardware device does not exist on the system.
.PP
.BR /etc " Directory:"
.TP 0.5i
.I Files:
mtab passwd rc ttytab
.I and as needed.
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
Standard location of files required during system boot. Files in this
directory are usually system specific. Most will require human
intervention during system upgrade.
.B /etc
will also contain administrative binaries that should not be in the
normal user's PATH.
.PP
.BR /home " Directory:"
.TP 0.5i
.I Files:
.B NONE.
.TP 0.5i
.I Directories:
.I One per user excepting root.
.TP 0.5i
.I Rationale:
Standard location of users' home directories. Will most likely be a
mounted file system once the system is up.
.BR root 's
home directory should be
.BR / .
.PP

.BR /lib " Directory:"
.TP 0.5i
.I Files:
.I Libraries required for system initialization.
.TP 0.5i
.I Directories:
.I None defined by spec
.TP 0.5i
.I Rationale:
To keep the size of the root partition small (if separate from
.BR /usr ),
the files in this directory should only be ones required by files in
the root partition.
.PP

.BR /mnt " Directory:"
.TP 0.5i
.I Files:
.B NONE.
.TP 0.5i
.I Directories:
.B NONE
.TP 0.5i
.I Rationale:
Standard mount point for external (transient) file systems. Must be
available for sub-system installation. Should remain as an empty directory.
.PP

.BR /tmp " Directory:"
.TP 0.5i
.I Files:
.B NONE.
.TP 0.5i
.I Directories:
.B NONE.
.TP 0.5i
.I Rationale:
Temporary file space available for general program use. May become a
mounted partition upon system boot.
.PP

.BR /usr " Directory:"
.TP 0.5i
.I Files:
.I None defined by spec.
.TP 0.5i
.I Directories:
adm bin spool local lib etc man info include src tmp
.TP 0.5i
.I Rationale:
.B /usr
is the mount point for the second major (after root) hierarchy of file
structure and is discussed in the next section.
.PP

.BR /usr/adm " Directory:"
.TP 0.5i
.I Files:
.I None defined by spec.
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
Location of log files and accounting information.
.PP

.BR /usr/bin " Directory:"
.TP 0.5i
.I Files:
.I All executable files from standard distribution not contained in
.BI /bin .
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
Contains 'drop-in' executables that are considered to be standard to
the UNIX system. These files should
.B not
be Linux specific, but should have the same function as their UNIX
equivalents.
.PP

.BR /usr/etc " Directory:"
.TP 0.5i
.I Files:
.I None defined by spec.
.TP 0.5i
.I Directories:
inet
.I and as needed.
.TP 0.5i
.I Rationale:
Contains configuration files for any files in
.BR /usr/bin .
Helps to keep
.B /etc
clean and small.
.PP

.BR /usr/etc/inet " Directory:"
.TP 0.5i
.I Files:
services hosts inetd inetd.conf telnetd sendmail ftpd
.I and as needed.
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
Contains internet daemons and configuration files.
.PP

.BR /usr/spool " Directory:"
.TP 0.5i
.I Files:
.I None defined by spec.
.TP 0.5i
.I Directories:
uucp mail news
.I and as needed
.TP 0.5i
.I Rationale:
Contains spool files for mail, printing, uucp trasfer, etc. May be a
mount point for another volume.
.PP

.BR /usr/local " Directory:"
.TP 0.5i
.I Files:
.B NONE.
.TP 0.5i
.I Directories:
bin lib etc man src
.TP 0.5i
.I Rationale:
Contains files local to the specific system. Will not be modified by
the upgrade process.
.PP

.BR /usr/lib " Directory:"
.TP 0.5i
.I Files:
libc.a crt0.s
.I and as needed.
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
Location for library files required for multi-user system operation.
This is the directory where program libraries should reside.
.B /usr/lib
will also contain binaries required to support programs residing in
.BR /usr/bin .
.PP

.BR /usr/man " Directory:"
.TP 0.5i
.I Files:
whatis
.TP 0.5i
.I Directories:
man1 man2 man3 man4 man5 man6 man7 man8 man9 cat1 cat2 cat3 cat4
cat5 cat6 cat7 cat8 cat9
.TP 0.5i
.I Rationale:
Contains the standard manual pages for Linux. It also may contain a
whatis database of manual pages. Does not contain manual
pages for local programs
.PP

.BR /usr/info " Directory:"
.TP 0.5i
.I Files:
.I Files required for GNU's
.BR info ( 1 )
program, or for the info browser under
.BR emacs ( 1 ).
.TP 0.5i
.I Directories:
.I None defined by spec.
.TP 0.5i
.I Rationale:
Info files are the GNU equivalent of
.B man
pages, so it does not make sense to relegate them to, say,
/usr/lib/info.
.PP

.BR /usr/include " Directory:"
.TP 0.5i
.I Files:
.I Programming include files.
.TP 0.5i
.I Directories:
.I As needed.
.TP 0.5i
.I Rationale:
Standard place for system include files.
.PP

.BR /usr/src " Directory:"
.TP 0.5i
.I Files:
.B NONE.
.TP 0.5i
.I Directories:
bin lib linux usr.bin usr.lib
.I and as needed.
.TP 0.5i
.I Rationale:
Contains source code for all applications in the release,
.B /usr/src/linux
contains directories required for kernel builds.
.PP

.BR /usr/tmp " Directory:"
.TP 0.5i
.I Files:
.B NONE.
.TP 0.5i
.I Directories:
.B NONE.
.TP 0.5i
.I Rationale:
Used as additional scratch space for programs. If
.B /tmp
is a mounted file system,
.B /usr/tmp
may be a symbolic link to
.BR /tmp .
.PP

.BR /usr/local/man " Directory:"
.TP 0.5i
.I Files:
whatis
.TP 0.5i
.I Directories:
manl catl
.TP 0.5i
.I Rationale:
This is where man pages corresponding to programs in
.B /usr/local/bin
are kept.
.PP

.SH NOTES
If you have comments/questions about this document, and you are not on
the linux-standards mailing list, I would ask that you join the list.
The request address is: linux-standards-request@banjo.concert.net.
Please try to keep debate off the news group, and on the mailing list.

.SH "SEE ALSO"
.BR man ( 7 )
for information on what the standard meanings of the manual
sections are.

.SH AUTHORS
Revision 1.0 of this standard was drafted by Alan Clegg
(abc@concert.net) from discussion on the linux-standards mailing list.

Man page and further revision by Michael K. Johnson
(johnsonm@stolaf.edu) and the linux-standards mailing list.