Why is a drive letter permitted in front of UNC paths (sometimes)?
A little-known quirk is that the file system accepts and ignores
a drive letter in front of a UNC path.
For example, if you have a directory called
\\server\share\directory, you can say
dir P:\\server\share\directoryand the directory will be listed to the screen. The leading
Why is that?
Rewind to 1984 and the upcoming release of MS-DOS 3.1,
which added networking support.
Up to this point, all fully-qualified file specifications
consisted of three components:
A drive letter, a path, and a file name.
Many programs relied on this breakdown and did things like
“helpfully” prepend a drive letter if it looks like you
For example, if you told it to save the results to
\\server\share\file.txt it would say,
“Oh dear, that’s not good, the user forgot the drive letter!
I’ll put the current drive in front to make things better,”
Other programs would prompt you with
“Please enter a drive letter”,
and you couldn’t say “No, there’s no drive letter, just
take the path and use it.”
They insisted on a drive letter,
and you darn sure better give them one.
(Compare the Unix programs that “helpfully” rewrite
/server/volume/file because they “know”
that consecutive slashes collapse,
unaware of the special exception for two leading slashes.)
In order to retain compatibility with programs that
provided this sort of “unwanted help”,
the designers of the networking support in MS-DOS
decided to allow the strange syntax
C:\\server\share\directory and treat it as if the drive letter simply weren’t there.
Some (but not all) of this quirk of path parsing persists today.
[Raymond is currently away; this message was pre-recorded.]