GICT knowledge base
How to Use Absolute and Relative Paths in Linux
Published
Navigating the Linux filesystem efficiently is a key skill for any user, whether you are a beginner or an experienced administrator. Understanding the difference between absolute and relative paths—and knowing when to use each—is essential for managing files, running commands, writing scripts, and working productively in the Linux command line environment.
In this article, you will learn what absolute and relative paths are, how they work, how to use them in everyday tasks, and how to avoid common mistakes. The article covers step-by-step examples, practical scenarios, and best practices to ensure you can move and manage files confidently across any Linux system.
Prerequisites
Before you begin, ensure you have:
- Access to a Linux machine or terminal
- Basic command-line experience (such as using
ls,cd,pwd, and file operations) - Familiarity with the Linux directory structure (such as
/home,/etc,/var)
Introduction to Paths in Linux
A path in Linux is a way to specify the location of a file or directory in the filesystem. Paths can be absolute or relative. Understanding the difference is critical for navigation, scripting, and automation.
Absolute Path: Describes the location of a file or directory from the root (/) of the filesystem. It always starts with a forward slash (/).
Relative Path: Describes the location of a file or directory in relation to the current working directory. It does not start with a forward slash.
Both types of paths are used in commands, scripts, and configuration files. Choosing the right one depends on the context and your current working directory.
Absolute Paths Explained
An absolute path always starts from the root of the filesystem. It shows the full directory tree to reach a file or folder, regardless of your current location in the terminal.
Example Absolute Paths
/home/alex/documents/report.txt/etc/ssh/sshd_config/var/log/syslog/usr/local/bin/python3
No matter where you are in the directory structure, these paths point to the same files or directories.
Using Absolute Paths
Absolute paths are useful when you want to:
- Reference files or directories unambiguously
- Run scripts or commands from any location
- Avoid confusion in scripts or cron jobs where the working directory may change
Example: Viewing a File with Absolute Path
Suppose you want to display the contents of the system hosts file:
$ cat /etc/hosts
It does not matter where you are in the filesystem; the absolute path always works.
Example: Copying a File to a Specific Location
$ cp /tmp/testfile.txt /home/alex/
Relative Paths Explained
A relative path specifies a file or directory location based on your current working directory. It does not begin with a slash.
Example Relative Paths
Suppose your current working directory is /home/alex/documents:
report.txt(refers to/home/alex/documents/report.txt)../photos/image.jpg(refers to/home/alex/photos/image.jpg)./summary.docx(refers to/home/alex/documents/summary.docx)../../music/song.mp3(refers to/home/alex/music/song.mp3)
Relative paths enable flexible navigation and make scripts or commands more portable.
Special Directory References
.(dot) refers to the current directory..(double dot) refers to the parent directory
Example: Navigating with Relative Paths
If you are in /home/alex/documents and want to move to /home/alex/photos, use:
$ cd ../photos
This command moves you up one level (to /home/alex), then into the photos directory.
Example: Copying Using Relative Paths
$ cp report.txt ../archive/
Assuming you are in /home/alex/documents, this command copies report.txt to /home/alex/archive/.
Checking Your Current Working Directory
$ pwd
/home/alex/documents
This helps you construct correct relative paths for file operations.
Absolute vs. Relative Paths: When to Use Each
Use Absolute Paths When You:
- Need to reference files independent of your current location
- Write scripts or cron jobs where the working directory might change
- Want clarity and avoid ambiguity in mission-critical operations
Use Relative Paths When You:
- Work interactively and want to minimize typing
- Move files around within related directories
- Write scripts for use in specific directory structures
- Want portability—especially when the root path may vary on different systems
Practical Examples
Example 1: Opening Files
Suppose you are in /home/alex/documents and want to open notes.txt:
Using an absolute path:
$ nano /home/alex/documents/notes.txt
Using a relative path:
$ nano notes.txt
Both commands will open the same file if you are in the documents directory.
Example 2: Moving Up and Down the Directory Tree
If you are in /home/alex/documents/projects and want to list files in /home/alex/music:
Move to the parent directory:
$ cd ../..
$ cd music
$ ls
Or, use a single command with a relative path:
$ ls ../../music
Example 3: Scripting with Paths
Scripts often use absolute paths to avoid errors due to changing directories:
#!/bin/bash
cat /etc/hostname
cp /home/alex/documents/summary.docx /backup/
However, when scripts operate within a specific project directory, relative paths make them portable:
#!/bin/bash
cat data/input.txt
mv output/results.log ../archive/
Run this script from the project directory for consistent results.
Understanding Path Shortcuts
Linux provides several shortcuts to simplify working with paths:
~(tilde) represents the current user’s home directory$ cd ~ $ ls ~/downloads.(dot) is the current directory$ ls ...(double dot) is the parent directory$ cd ..
Use these shortcuts for faster navigation and scripting.
Combining Paths and Wildcards
Use wildcards like * and ? with absolute or relative paths to match multiple files:
- List all .txt files in your home directory:
$ ls ~/documents/*.txt - Copy all images from a subdirectory:
$ cp images/*.jpg ../photos/ - Move all files in the current directory to /tmp:
$ mv * /tmp/
Common Mistakes and Troubleshooting
Mistake: Confusing Absolute and Relative Paths
If you run:
$ cd documents
from /home/alex, you move into /home/alex/documents. However, if you run:
$ cd /documents
the command tries to enter /documents at the root, which may not exist. Always check whether your path is absolute or relative.
Mistake: Using the Wrong Number of Dots
cd .keeps you in the current directorycd ..moves you up one directorycd ../..moves you up two directories
Mistake: Paths with Spaces
If a file or directory name contains spaces, use quotes or escape characters:
$ cd "My Documents"
$ ls My\ Documents/
Mistake: Scripting Without Considering the Working Directory
Scripts that assume a specific working directory may fail if run elsewhere. Use absolute paths for critical files or add checks for the working directory.
Advanced Usage
Changing the PATH Environment Variable
PATH is an environment variable containing a list of absolute paths where the system looks for executables:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
You can add directories to PATH using absolute paths:
$ export PATH=$PATH:/home/alex/scripts
Symbolic and Hard Links
When creating links, use absolute paths for global accessibility or relative paths for portability:
$ ln -s /usr/local/bin/myapp ~/bin/myapp
$ ln -s ../shared/config.txt ./config.txt
Finding Files
- Find all .conf files under /etc:
$ find /etc -name "*.conf" - Find all .sh scripts in the current directory:
$ find . -name "*.sh"
Combining with Other Commands
- Download a file to a specific directory:
$ wget -P /home/alex/downloads https://example.com/file.zip - Extract an archive to a relative location:
$ tar -xzvf archive.tar.gz -C ../extracted/
Best Practices
- Use absolute paths in scripts, cron jobs, or system configurations for reliability.
- Use relative paths for interactive work, project-based scripts, and portability.
- Always verify your current directory with
pwdbefore using relative paths. - Double-check path spelling and use tab completion to avoid typos.
- Use quotes for paths with spaces or special characters.
- Document any critical scripts or configuration files with notes about expected paths.
Conclusion
Mastering absolute and relative paths is fundamental for efficient Linux usage. Knowing when and how to use each type of path enables you to navigate the filesystem, manage files, and write robust scripts with confidence. By practicing with both absolute and relative paths, and understanding their roles in different scenarios, you will develop the skills necessary for advanced Linux administration and development.
With this knowledge, you can streamline your workflow, avoid common mistakes, and handle files and directories across any Linux system with ease.
Related guides
How to Set Up zram on a Small VPS
Configure zram on Ubuntu with kernel and swap checks. Understand compressed memory limits, monitor real use and avoid unsafe swap-file changes.
LinuxHow to Find Services That Need a Restart After Updates with needrestart
Find services using outdated libraries with needrestart on Ubuntu. Read restart reports, review automatic restart policy and plan maintenance safely.
LinuxHow to Limit a Linux Service’s Memory with systemd
Limit a Linux service with systemd MemoryHigh, MemoryMax and swap controls. Check cgroup support, diagnose pressure and remove only your own policy.
LinuxHow to Protect SSH with CrowdSec on Ubuntu
Protect SSH with CrowdSec on Ubuntu. Connect log detection to firewall enforcement and test temporary blocking without losing administrator access.
