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 thecat
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 namedfoo.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