What is a full path name?

No, your assumption is wrong. The full path name for my_script file from your home directory is: /home/your_user_name/my_script. When you type ./my_script in terminal you actually try to execute the script (if is executable) and it will be executed only if your current working directory is /home/your_user_name/. To execute the script you can use also the full file path which is, as I said /home/your_user_name/my_script.

It is believed that a UNIX path name looks and feels like Internet addresses, thus result into compatibility. The full path name of the current working directory can be found in terminal by using the following command:

pwd

To find out the full path for your user home directory, you can use:

echo ~
echo $HOME
echo /home/$USER

The above three commands are equivalent.

To find out the full path name for a file you can use readlink command. For example, in your case:

cd ~
readlink -f my_script

Full path name really means the full path to that file or folder from the filesystem's / directory.

For example, the full path to your script is:

/home/your_username/my_script

Or, the full path name to the grep executable is

/bin/grep

As for the ./my_script, the symbol . stands for the current directory, so you actuallly say "Look under the current directory for a file or folder named my_script"


In order to understand the full path, you must first know the starting point.

The root directory / it is the starting point of *nix based operating systems. It contains all the other directories both system's and user's.

User's home directory /home/USERNAME/ or ~/ for short, contains user's files and directories. For example Pictures, Music, Documents, etc. Each of these directories is referenced as /home/USERNAME/DIRECTORY for example Documents is located at /home/USERNAME/Documents.

Like with directories, files are referenced in the same way, for example a file named my_script located at the home directory of the user sosytee can be referenced using the full path /home/sosytee/my_script or ~/my_script for short.

Both files and directories can be referenced/accessed using their full paths from everywhere in the system. Additionally one can access them using only their name if it is in the same directory. For example if the user is at ~/ when using the terminal, he can access my_script file by using just my_script.

Additionally one can access directories and files by using their name only, if they are placed at his PATH variable. You can see what is store in PATH by using echo $PATH.

Simple examples on how to access files using the command line:

  • The user is currently at /home/USERNAME/ and wants to use the cat command on a file located at /home/USERNAME/Documents named foo.txt:

cat Documents/foo.txt

  • The user is inside ~/Documents and wants to run a script named foo.sh located ad ~/Scripts/Foo:

    sh ../Scripts/Foo/foo.sh

    or

    sh ~/Scripts/Foo/foo.sh

by all means this is just a summary.

Further information

  • Bash Guide for Beginners, by Machtelt Garrels

  • More about PATH here

  • About Unix directory structure