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

jrs*_*tto 95 windows unix path

我在大学使用 Unix 而现在在 Windows 方面工作,这让我很恼火。这个决定背后的历史是什么?有谁知道为什么会这样?

Gil*_*il' 115

Unix/在 1970 年左右的某个时候被引入作为目录分隔符。我不知道为什么选择这个字符;祖先系统Multics的使用>,但Unix上的设计者已经使用了>一起<在外壳重定向(见为什么是一个表示的根目录/标志?)。

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,因此它们支持/并且\无动于衷。在命令解释器(在command.comcmd)中,您可以/在很多情况下使用,但并非总是如此;这部分取决于 Windows 的版本(例如,cd /windows适用于 XP 和 7,但不适用于 Windows 9x)。Explorer 路径输入框接受/(至少从 XP 开始;可能是因为它也接受 URL)。另一方面,标准文件打开对话框拒绝 slashes

  • 有趣的是,我最近翻了翻 DOS 1 和 2 的源代码和手册,发现微软像 Xenix 一样使用 `/`(和 `-` 用于开关),并受到 Xenix 的启发,但 IBM 在微软发货给 OEM 之前发布,而 IBM使用 `\`(和 `/` 作为开关)并将提示从 `A:` 更改为 `A&gt;`,因此他们更改了默认值并提供了错误(仍然假设为 `/`/`-`)文档以及说明它被改变了,为什么。 (3认同)
  • `/` 被 MS-DOS 或 Windows 命令行识别为目录分隔符。 (2认同)
  • “C:\Windows\System32&gt;cd /windows/system”有效。 (2认同)
  • `/` 可能在 UNIX 中被用作目录分隔符,因为它是在电传打字机上敲击的简单(未移位)键。未移位的特殊字符是`: - ; , . /`。 (2认同)

Tam*_*man 10

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

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

  • 比较dir/w,以宽格式显示当前目录,反对dir\wwdir目录中运行文件。

参考: