Windows为什么要对路径使用反斜杠而对Unix使用正斜杠?


Answers:


98

Unix /在1970年左右的某个时候被引入为目录分隔符。我不知道为什么选择这个字符?祖先系统Multics曾使用过>,但Unix的设计者已经在shell中>与一起使用<来进行重定向(请参见为什么用/符号来表示根目录?)。

MS-DOS 2.0 \在1980年代初期作为目录分隔符引入。/未使用的原因是MS-DOS 1.0(根本不支持目录)已经/用于引入命令行选项。它采取了这种用法/CP / M,它把它从VMS。您可以在Larry Osterman的博客上阅读有关为什么做出该选择的更详尽的解释(MS-DOS甚至暂时可以将选项字符更改为-,将目录分隔符更改为/,但并没有坚持)。

/大多数程序员级别的API(在所有版本的DOS和Windows中)都可以识别它。因此,/在Windows下使用目录分隔符经常(但并非总是)会遇到麻烦。一个值得注意的例外是,您不能将其/用作\\?前缀后的分隔符,即使在Windows 7中前缀也是使用Unicode或包含260个以上字符来指定路径的唯一方法。

/在Windows下,某些用户界面元素支持作为目录分隔符,但并非全部。某些程序只是通过底层API传递文件名,所以他们支持/\漠然。在命令解释器中(in command.comcmd),您可以/在很多情况下使用,但并非总是如此;这部分取决于Windows的版本(例如,cd /windows可以在XP和7中使用,但不能在Windows 9x中使用)。Explorer路径输入框接受/(至少从XP开始;可能是因为它也接受URL)。另一方面,标准文件打开对话框拒绝斜杠


2
/被MS-DOS或Windows命令行识别为目录分隔符。
Tamara Wijsman 2010年

1
“ C:\ Windows \ System32> cd / windows / system”有效。
Andrew J. Brehm

@TomWij:您是否参考/了命令行上的确切位置?例如,做dir /p什么?和dir c:/p?和c:/windows/notepad.exe?和start /windows/notepad.exe?等等(我这里没有Windows计算机可以测试。)
Gilles 2010年

2
/在UNIX中可能用作目录分隔符,因为它是在Teletype上使用的简单(不变)键。不变的特殊字符是: - ; , . /
Daniel R Hicks

2
有趣的是,我最近浏览了DOS 1和2的源代码和手册,发现Microsoft使用/(以及-用于交换机)像Xenix,并受Xenix的启发,但是IBM在Microsoft交付给OEM之前发布了,而IBM使用` (and /用于交换机)。并将提示从更改为A:A>因此他们更改了默认和出厂的错误文档(仍然假设// -),并加上说明已更改的原因以及原因。
mirabilos '16

9

底层的Windows API可以接受反斜线或斜线的路径的单独的目录和文件的组成部分,但微软的惯例是用一个反斜杠,并返回路径的API把反斜线英寸

MS-DOS 2.0从Unix复制了分层文件系统,因此使用了正斜杠,但是(可能是在IBM的坚持下)添加了反斜杠,以允许在不与MS-DOS 1.0CP兼容的情况下在命令外壳中键入路径/ M,其中斜杠是命令行选项指示符。

相比

dir/w

它以宽格式显示当前目录

dir\w

这将w在Director中运行文件dir

参考文献:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.