Next: Directory Names, Previous: File Name Components, Up: File Names [Contents][Index]
All the directories in the file system form a tree starting at the root directory. A file name can specify all the directory names starting from the root of the tree; then it is called an absolute file name. Or it can specify the position of the file in the tree relative to a default directory; then it is called a relative file name. On Unix and GNU/Linux, an absolute file name starts with a ‘/’ or a ‘~’ (see abbreviate-file-name), and a relative one does not. On MS-DOS and MS-Windows, an absolute file name starts with a slash or a backslash, or with a drive specification ‘x:/’, where x is the drive letter.
This function returns t
if file filename is an absolute
file name, nil
otherwise.
(file-name-absolute-p "~rms/foo") ⇒ t
(file-name-absolute-p "rms/foo") ⇒ nil
(file-name-absolute-p "/user/rms/foo") ⇒ t
Given a possibly relative file name, you can convert it to an
absolute name using expand-file-name
(see File Name Expansion). This function converts absolute file names to relative
names:
This function tries to return a relative name that is equivalent to
filename, assuming the result will be interpreted relative to
directory (an absolute directory name or directory file name).
If directory is omitted or nil
, it defaults to the
current buffer’s default directory.
On some operating systems, an absolute file name begins with a device
name. On such systems, filename has no relative equivalent based
on directory if they start with two different device names. In
this case, file-relative-name
returns filename in absolute
form.
(file-relative-name "/foo/bar" "/foo/") ⇒ "bar" (file-relative-name "/foo/bar" "/hack/") ⇒ "../foo/bar"
Next: Directory Names, Previous: File Name Components, Up: File Names [Contents][Index]