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

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

这让我很恼火,因为我在大学时用过 Unix,现在却在 Windows 上工作。这个决定背后的历史是什么?有人知道为什么会这样吗?

答案1

Unix/在 1970 年左右引入了目录分隔符。我不知道为什么选择这个字符;祖先系统 Multics 使用了>,但 Unix 的设计者已经将><用于 shell 中的重定向(参见为什么根目录用符号来表示/)。

操作系统2.0\于 20 世纪 80 年代初引入目录分隔符。之所以/没有使用,是因为 MS-DOS 1.0(根本不支持目录)已经使用/引入命令行选项. 它可能/虚拟机管理系统(其语法更为复杂目录)您可以阅读有关做出该选择的更详细解释在 Larry Osterman 的博客上。MS-DOS 甚至曾短暂地提供将选项字符更改为-并将目录分隔符更改为 的选项/,但是没有坚持下去。

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

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

答案2

底层 Windows API可以接受反斜杠或斜杠来分隔路径的目录和文件组件,但 Microsoft 的惯例是使用反斜杠,并且返回路径的 API 会将反斜杠放进去。

MS-DOS 2.0从 Unix 复制了分层文件系统,因此使用了正斜杠,但(可能是在IBM)添加了反斜杠,允许在命令 shell 中输入路径,同时保持与MS-DOS 1.0控制/管理其中斜线是命令行选项指示符。

  • 比较dir/w以宽格式显示当前目录与运行目录内的dir\w文件的。wdir

参考:

相关内容