That's a great follow-up question! Choosing between them usually depends on portability and convenience.
You would prefer relative paths in these common scenarios:
1. Project Portability (The most common reason)
If you are developing a project (like a website or a Python program) inside /home/labex/project, you want your files to find each other regardless of where the project folder is moved.
- Why: If you move your project to a different computer or a different folder (e.g.,
/home/other-user/project), an absolute path like/home/labex/project/image.pngwill break because that path no longer exists. A relative path like./image.pngwill still work perfectly because the file is still in the same place relative to your code.
2. Speed and Efficiency
When you are working deep inside a directory tree, typing relative paths is much faster.
- Example: If you are already in
/home/labex/project/practice/subdirectory/and want to go up one level:- Relative:
cd ..(only 5 keystrokes) - Absolute:
cd /home/labex/project/practice(over 30 keystrokes)
- Relative:
3. Moving within organized structures
If you are moving between "sibling" folders, relative paths are more intuitive.
- Example: Changing from a
src(source) folder to adocsfolder inside the same project:cd ../docs.
When to prefer Absolute Paths?
On the other hand, you use absolute paths when:
- Writing Scripts/Crontabs: When you write an automated script, you often use absolute paths to ensure the script works correctly no matter which directory it is executed from.
- Referencing System Files: When accessing configuration files like
/etc/hostsor logs in/var/log, you always use absolute paths because those locations never change.
Summary Tip: If it's part of a project you might move or share, go relative. If it's a system-wide file or a background script, go absolute.