Linux realpath: Find Absolute Pathname For Given Command or File

in Categories , , , , , , , last updated October 26, 2009

How do I find out the canonicalised absolute pathname for a given command or file under Linux operating systems?

You need to use the realpath command. It will converts each filename argument to an absolute pathname, which has no components that are symbolic links or the special . (current directory) or .. (parent directory) entries.

The realpath command expands all symbolic links and resolves references to /./, /../ and extra ‘/’ characters in the null-terminated string named by path to produce a canonicalized absolute pathname. The resulting pathname is stored as a null-terminated string, up to a maximum of PATH_MAX butes, in the buffer pointed to by resolved_path. The resulting path will have no symbolic link, /./ or /../ components.


The syntax is as follows:

realpath /path/to/file
realpath /path/to/command


Type the following command:
ls -l /etc/motd
Sample outputs:

lrwxrwxrwx 1 root root 13 2007-10-06 04:52 /etc/motd -> /var/run/motd

/etc/motd is a symbolic link, which points to ./var/run/motd. To verify this and to print real absolute path, enter:
realpath /etc/motd
Sample outputs:


The -s option

If option -s is used realpath only removes . and .. directories, but not symbolic links from filename.
realpath -s /path/to/file

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

Share this on (or read 0 comments/add one below):