Many file systems permit more than one filename to designate a particular file.
Even where multiple names are possible, most file systems have a convention for generating a canonical filename in such situations. Such a canonical filename (or the pathname representing such a filename) is called a truename.
The truename of a file may differ from other filenames for the file because of symbolic links, version numbers, logical device translations in the file system, logical pathname translations within Common Lisp, or other artifacts of the file system.
The truename for a file is often, but not necessarily, unique for each file. For instance, a Unix file with multiple hard links could have several truenames.
For example, a DEC TOPS-20 system with files PS:<JOE>FOO.TXT.1
and PS:<JOE>FOO.TXT.2
might permit the second file to be referred
to as PS:<JOE>FOO.TXT.0
, since the “.0
” notation denotes “newest”
version of several files.
In the same file system, a “logical device” “JOE:
” might be
taken to refer to PS:<JOE>
” and so the names JOE:FOO.TXT.2
or
JOE:FOO.TXT.0
might refer to PS:<JOE>FOO.TXT.2
.
In all of these cases, the truename of the file would probably be
PS:<JOE>FOO.TXT.2
.
If a file is a symbolic link to another file (in a file system permitting such a thing), it is conventional for the truename to be the canonical name of the file after any symbolic links have been followed; that is, it is the canonical name of the file whose contents would become available if an input stream to that file were opened.
In the case of a file still being created (that is, of an output
stream open to such a file), the exact truename of the file
might not be known until the stream is closed. In this case,
the function truename
might return different values for such a stream
before and after it was closed. In fact, before it is closed, the name returned
might not even be a valid name in the file system—for example, while a
file is being written, it might have version :newest and might only take on
a specific numeric value later when the file is closed even in a file system
where all files have numeric versions.