Linux is a multi-user environment so each user is also assigned
a specific directory that is accessible only to them and the system
administrator. These are the user home directories, which can be
found under '/home/$USER' (~/). It is your playground: everything
is at your command, you can write files, delete them, install
programs, etc.... Your home directory contains your personal
configuration files, the so-called dot files (their name is
preceded by a dot). Personal configuration files are usually
'hidden', if you want to see them, you either have to turn on the
appropriate option in your file manager or run ls with the -a
switch. If there is a conflict between personal and system wide
configuration files, the settings in the personal file will
Dotfiles most likely to be altered by the end user are probably
your .xsession and .bashrc files. The configuration files for X and
Bash respectively. They allow you to be able to change the window
manager to be startup upon login and also aliases, user-specified
commands and environment variables respectively. Almost always when
a user is created their dotfiles will be taken from the /etc/skel
directory where system administrators place a sample file that
user's can modify to their hearts content.
/home can get quite large and can be used for storing downloads,
compiling, installing and running programs, your mail, your
collection of image or sound files etc.
The FSSTND states that:
/home is a fairly standard concept, but it is clearly a site-specific
Different people prefer to place user accounts in a variety of places.
This section describes only a suggested placement for user home
directories; nevertheless we recommend that all FHS-compliant
distributions use this as the default location for home directories.
On small systems, each user's directory is typically one of the many
subdirectories of /home such as /home/smith, /home/torvalds,
/home/operator, etc. On large systems (especially when the /home
directories are shared amongst many hosts using NFS) it is useful
to subdivide user home directories. Subdivision may be accomplished by
using subdirectories such as /home/staff, /home/guests, /home/students,
The setup will differ from host to host. Therefore, no program
should rely on this location.
If you want to find out a user's home directory, you should use the
getpwent(3) library function rather than relying on /etc/passwd because
user information may be stored remotely using systems such as NIS.
User specific configuration files for applications are stored in the
user's home directory in a file that starts with the '.' character
(a "dot file"). If an application needs to create more than one dot
file then they should be placed in a subdirectory with a name starting
with a '.' character, (a "dot directory"). In this case the
configuration files should not start with the '.' character.
It is recommended that apart from autosave and lock files programs
should refrain from creating non dot files or directories in a home
directory without user intervention.