Skip to main content
Engineering LibreTexts

04-E.12.2: Linux Directory Structure - Home Directory

  • Page ID
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Special Linux Directory Concepts

    Home Directory

    A user's home directory is intended to contain that user's files, including text documents, music, pictures or videos, etc. It may also include their configuration files of preferred settings for any software they have used there and might have tailored to their liking: web browser bookmarks, favorite desktop wallpaper and themes, passwords to any external services accessed via a given software, etc. The user can install executable software in this directory, but it will only be available to users with permission to this directory. The home directory can be organized further with the use of sub-directories.

    Be aware - the home directory for the root user is /root. Do not confuse /root with the system root which is /, the top of the filesystem.

    Most shells refer to a user's home directory with the ~ (the tilde).

    A partial listing of a user's home directory:

    santiago@pbmac-server $ ls -al
    total 136
    drwxr-xr-x 11 santiago santiago  4096 Jun  4 15:10 .
    drwxr-xr-x  5 root     root      4096 Jun  4 14:21 ..
    -rw-------  1 santiago santiago  2027 Jun  5 16:42 .bash_history
    -rw-r--r--  1 santiago santiago   220 Apr 18 16:30 .bash_logout
    -rw-r--r--  1 santiago santiago  3802 Apr 23 16:22 .bashrc
    drwxrwxr-x  2 santiago santiago  4096 Jun  4 14:18 Desktop
    drwxrwxr-x  2 santiago santiago  4096 Jun  4 14:18 Documents
    drwxrwxr-x  2 santiago santiago  4096 Jun  4 14:18 Downloads

    We will talk more about what all of this means in great detail in the next Module.

    Next we will go over some concepts that we will need to deal with regarding the filesystem.

    Current Working Directory

    The concept of current directory refers to the directory you are located in on the system. When a user logs into the system their current working directory (cwd) is their home directory. As you move around on the system your cwd changes.

    The cwd is represented by a single period. Remember when we talked about naming files we stated that . and .. have special meaning? So, . is always the cwd. You can always find your cwd using the Linux pwd command. There is also an environmental variable, PWD, that maintains the state of your cwd.

    pbmac@pbmac-server $ echo $PWD
    pbmac@pbmac-server $ pwd
    pbmac@pbmac-server $ ls -l xyz.txt 
    ---------- 1 santiago santiago 99 Jun  4 14:19 xyz.txt
    pbmac@pbmac-server $ ls -l ./xyz.txt 
    ---------- 1 santiago santiago 99 Jun  4 14:19 ./xyz.txt
    pbmac@pbmac-server $ cd ~
    pbmac@pbmac-server $ pwd
    pbmac@pbmac-server $ echo $PWD

    In the output: we echo the environment variable (Yes - the $ is required); using the pwd command we print the working directory; we list the file xyz.txt and then print out "here"/xyz.txt - because . is "this directory"; then using tilde we change directories with the cd command to my home directory; again use both the pwd command and echo the PWD environment variable.

    Parent Directory

    Every directory, except the / directory, has a parent directory. For my home directory, /home/pbmac, the parent directory is /home. It is simply the directory that is one level above the current directory. The double dot notation .. refers to the parent directory.

    pbmac@pbmac-server $ pwd
    pbmac@pbmac-server $ cd ..
    pbmac@pbmac-server $ pwd

    Adapted from:
    "Home directory`" by Multiple ContributorsWikipedia is licensed under CC BY-SA 3.0

    04-E.12.2: Linux Directory Structure - Home Directory is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by LibreTexts.

    • Was this article helpful?