Next: Directories, Previous: Auto Save, Up: Files [Contents][Index]

### 18.7 File Name Aliases

Symbolic links and hard links both make it possible for several file names to refer to the same file. Hard links are alternate names that refer directly to the file; all the names are equally valid, and no one of them is preferred. By contrast, a symbolic link is a kind of defined alias: when `foo` is a symbolic link to `bar`, you can use either name to refer to the file, but `bar` is the real name, while `foo` is just an alias. More complex cases occur when symbolic links point to directories.

Normally, if you visit a file which Emacs is already visiting under a different name, Emacs displays a message in the echo area and uses the existing buffer visiting that file. This can happen on systems that support hard or symbolic links, or if you use a long file name on a system that truncates long file names, or on a case-insensitive file system. You can suppress the message by setting the variable `find-file-suppress-same-file-warnings` to a non-`nil` value. You can disable this feature entirely by setting the variable `find-file-existing-other-name` to `nil`: then if you visit the same file under two different names, you get a separate buffer for each file name.

If the variable `find-file-visit-truename` is non-`nil`, then the file name recorded for a buffer is the file’s truename (made by replacing all symbolic links with their target names), rather than the name you specify. Setting `find-file-visit-truename` also implies the effect of `find-file-existing-other-name`.

Sometimes, a directory is ordinarily accessed through a symbolic link, and you may want Emacs to preferentially show its linked name. To do this, customize `directory-abbrev-alist`. Each element in this list should have the form `(from . to)`, which means to replace from with to whenever from appears in a directory name. The from string is a regular expression (see Regexps). It is matched against directory names anchored at the first character, and should start with ‘`\``’ (to support directory names with embedded newlines, which would defeat ‘`^`’). The to string should be an ordinary absolute directory name pointing to the same directory. Do not use ‘`~`’ to stand for a home directory in the to string; Emacs performs these substitutions separately. Here’s an example, from a system on which `/home/fsf` is normally accessed through a symbolic link named `/fsf`:

    (("\\`/home/fsf" . "/fsf"))

Next: Directories, Previous: Auto Save, Up: Files [Contents][Index]