In your Linux journey, you’ll use both absolute and relative paths. It’s important to know the difference and, perhaps, when you want to use absolute paths or when you want to use relative paths. It’s a pretty easy lesson and not a terribly long article.
First, paths are directory names and links to files. They’re always unique names to files and folders. They’re useful for referencing things, knowing where things are, organization, and the likes. To manage a file, you should probably know where it is.
An example of an absolute path would be something like:
An example of a relative path would be something like:
An absolute path will always begin with a /, for example. As they’re the easiest, let’s cover them first:
Let’s say you have a file in your Documents directory and it is named foo.txt. If you wanted to read that file, you could navigate to the Documents directory and use cat
foo.txt to read the file.
That’s only going to work when you’re already in the Documents directory. If you’re not in the proper directory, you’ll have to use the absolute path. That would look like
cat /home//Documents/foo.txt and that would work.
As I said already, absolute paths have to start with a /. They’ll also start with one of the root directories, such as /etc, /bin, or /media. You can see those directories in your file manager by going up a level until you can go no further, when you’re at the absolute / directory.
An absolute path works even if you’re working in a different folder in the terminal. When you’re in /home/Pictures,
cat /home//Documents/foo.txt will still work just fine.
Again, they’re a unique identifier for a directory or a file. If you wanted to change the directory in the terminal, you could use
cd /home//Pictures. That would work just fine.
Relative paths are paths based on where you are already. They’re based on your “PWD or Present Working Directory. There’s a few ways that these can be used. Conversely, a relative path never begins with a /.
For example, if you’re already in /home/ then you can
cd Documents to get to your Documents directory. As you can see, that’s much easier to type.
Of course, there’s the tilde – which already means /home/. So while possibly not the same thing you’re thinking of when you think of relative paths, you can also get to the Documents directory with
If you’ve used the ‘ls‘ command before, you may have noticed a . and a .. in there. Well, the . stands for your current directory (and some commands will want that) and the .. stands for the next highest directory.
Assuming you were in the Documents folder, you could do
cat foo.txt you could also do
cat ./foo.txt and get the same results.
While in the Documents directory, you could
cd . and that’d take you exactly nowhere. More useful, you can
cd .. and you’d be back in /home/. If you did
cd ../.. you’d end up in the /home directory.
You can also (though I have no idea why you’d want to) use the above mentioned $PWD environment variable, but I never do and I don’t see much of a reason why you’d want to. Assuming you were in /home/ you could, again if you wanted, use
cd $PWD/Documents and happily reach the Documents directory just fine.
Absolute and Relative Paths:
As you can see, there are different times and places to use a relative and an absolute path. When in doubt, I prefer the absolute path. If I’m writing notes that may apply differently to different systems, I’m more likely to use the absolute path. When I’m in a hurry, I tend to use a relative path – when I can use one.
You might as well get used to using both of them. They both have a right time and place. Commands like chmod may want an absolute path or will want the directory included. So, you’ll possibly need to
chmod +x ./foo.txt instead of
chmod +x foo.txt. In time, you’ll adjust and know which suits your needs best.
By the way, if the tab autocomplete doesn’t work after the command, the command probably demands that you denote the current directory with the . indicator like in the chmod above. If you type chmod +x fo it will refuse to autocomplete the filename. Once again, in time you’ll learn when that’s needed.
Learning to use Linux is a journey, not a destination!
And there you have it! You have yet another article said and done. This one isn’t like some of my normal articles, but it’s still information folks might want to know. I find as the site grows, it gets possible to reference earlier articles, which is quite nice.
There are some articles I simply can’t write until I’ve taken the time to write other articles. I kinda like that. I’ve been enjoying typing these things out. I find the better I can explain them, the better I understand them. Heck, I recommend y’all make your own sites as this is pretty darned informative for me. The feedback is awesome and helps me understand even more.