16

I don't understand the difference between path and directory. Could someone explain to me with examples?

1

3 Answers 3

26

A directory is a "folder", a place where you can put files or other directories (and special files, devices, symlinks...). It is a container for filesystem objects.

A path is a string that specify how to reach a filesystem object (and this object can be a file, a directory, a special file, ...).

Example: you have (probably, depending on your system) a file where system messages are logged, called syslog.

It normally sits in a directory named log which is contained in a directory named var which is in the root directory of your filesystem.

Now, /var/log/syslog is a path to that file (an absolute path in that case), as /var/log is a path to the directory that contains the file. /var/spool/../log/syslog is also a path to the syslog file too (if /var/spool exists).

Paths can be relative, too. So if your current directory is /home/user, the path ../../var/log/syslog is a relative path to the same file, too (you know it's relative because it doesn't start with /).

And in your home directory, if you create a symlink to /var/log like this:

ln -s /var/log myvarlog

then myvarlog/syslog is another path to our file.

2
  • I'd like to know the reason for the downvotes. Is there something incorrect in the answer?
    – Rmano
    Commented Jan 31, 2016 at 9:47
  • 2
    Unfortunately, there is no way to know downvoters motivations. In any case, your answer is absolutely correct.
    – jlliagre
    Commented Jan 31, 2016 at 10:09
4

Directory is where you are.

Path is how to get there.

/var/www/public/site/pages/

pages is a directory

/var/www/public/site/pages/ is the path to files in that directory. This is an absolute path.

/var/www/public/site/ is the path to that directory.

./pages/ may be a path to files in that directory, if you are currently working in /var/www/public/site/. This is a relative path.

1
  • sorry but no. cwd is current working directory which means where you are.
    – user14082
    Commented Dec 8, 2023 at 0:17
0

On Linux, The terminology "directory" usually have two different meanings:

A. Unopened directory. Part of a "normal"(can be used to store data freely, like tmpfs or ext4, not used to expose kernel functionality, like procfs or sysfs) filesystem, usually consist of uniquely named pointers to other parts of the filesystem(other files or directories).

B. Open file description of a directory. A kernel object, which is a handler to A or some sort of interface to a kernel functionality.

The terminology "Path" is just a string which let you refer to one instance of A when constructing an instance of B.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .