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 /home/santiago pbmac@pbmac-server $ pwd /home/santiago 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 /home/pbmac pbmac@pbmac-server $ echo $PWD /home/pbmac
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.
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 /home/pbmac pbmac@pbmac-server $ cd .. pbmac@pbmac-server $ pwd /home