不同语言的文件路径约定不一样。
像 C 这样的旧语言根本没有任何约定。他们只是从操作系统中暴露了 API。例如,类 Unix 操作系统上的绝对路径可能是 /usr/chewy/stuff.txt,而在 Windows 上则是 C:\Users\chewy\stuff.txt。
他们这样做主要有两个原因:首先,这样做更容易,其次(更重要的是)让用户在使用以该语言编写的程序时,可以使用他们在操作系统上学到的约定。 unix 用户不需要输入 Windows 样式的路径,类似地,Windows 用户希望文件路径看起来像 Windows 文件路径。
在一些较新的语言中,默认文件路径是 Unix 样式 /a/b/c。它们仍然支持 Windows 样式的路径,但用户也可以在 Windows 上输入 unix 样式的路径,并且它仍然有效(在大多数情况下,/ 映射到 C:\,除非像 F:/ 那样明确更改将映射到 F:\)。
在一些更新的语言中走得更远。他们对文件路径使用 URI 语法,所以在内部你会看到file://home/chewy/stuff.txt。这几乎同时从两个方向发展:基于 Web 的软件,如 Web 浏览器和 Plan 9 操作系统(诚然,Plan 9 可能也受到 Web 开发的影响)。
相对路径
语言如何处理相对路径取决于它支持的约定类型。对于没有约定的语言,相对路径的工作方式与它在您的操作系统上的工作方式相同。因此对于 Windows,您需要学习 Windows 文件路径约定,而对于 Unix,您需要学习 unix 文件路径约定。
对于在 unix 样式文件路径上进行内部标准化的语言,它们也会实现 unix 文件路径约定。但是,并非所有语言都实现所有标准的 unix 约定。例如,Tcl 支持~ 引用用户的主目录,但大多数其他语言不支持。
对于使用 URI 语法的语言,您需要了解 URI 如何处理相对路径。它实际上包含在定义 URI 语法的 RFC 中:https://www.rfc-editor.org/rfc/rfc3986
常用约定
.. 文件指的是 Unixen、Windows 甚至 URI 语法上的父目录。因此,无论语言或操作系统如何,您都会经常看到这一点。
路径开头的. 指的是Unix 和Windows 上的当前工作目录。在 URI 语法中,. 只是从路径中删除。
进一步阅读
我强烈建议您了解操作系统的文件路径约定。十年前,我没想到有人会问这个问题,因为如果他们可以访问网站,那么他们就会知道如何浏览文件系统。这些天我很少看到 Windows 用户访问 cmd.com(还是叫 cmd.com 吗?)。
此外,我还建议学习 URI 语法,因为这是我经常看到初学者误解的事情之一。