//路径是什么意思?


9

cd根(/)拼写错误时,我正在终端中工作。偶然,我打了个电话//,进入了终端:

root@weblocalhost://#

当我键入时pwd,我会得到响应,//但是当我键入时,我会ls -s得到与/目录中相同的列表。

当您键入大于2时,即///得到:

root@weblocalhost:/#

/除2之外,总是1。有什么区别//吗?

Answers:


8

/ 相当于 //

POSIX规范(添加了重点):

3.267路径名

用于标识文件的字符串。在POSIX.1-2008的上下文中,路径名可以限制为{PATH_MAX}个字节,包括终止的空字节。它具有可选的起始<slash> 字符,后跟零个或多个以<slash> 字符分隔的文件名。路径名可以选择包含一个或多个结尾 <slash>字符。多个连续的<slash>字符被认为与一个相同<slash>,除了恰好两个前导<slash>字符的情况外。

4.12路径名解析

...
由单个组成的路径名<slash>应解析为进程的根目录。空路径名将无法成功解析。如果路径名以两个连续的<slash>字符开头<slash>,则尽管<slash>可以将两个以上的前导字符视为一个<slash> 字符,但可以以实现定义的方式来解释前导字符之后的第一个组件。

有关异常(cygwin和目录)的详细讨论,请参见:linux如何处理多个连续的路径分隔符(/ home ///// username //// file)?


4

您可以在目录中添加多个斜杠,并且不会改变任何内容。

例如,这三个命令都执行相同的操作:
cd /home
cd /home/
cd /home//

在完成所有这些操作之后,我当前的工作目录将设置为/ home(使用进行检查pwd)。

您已将您的提示配置为执行某些智能操作,并且遇到了意外行为。你什么时候会得到什么echo $PS1

链接到https://unix.stackexchange.com/ 上的评论,它可能会对此进行解释。


我在OSX上bash的PS1是“ \ h:\ W \ u \ $”,我也得到了这种奇怪的行为。/和///和////和/////都显示为/,但是两个正斜杠的特殊情况显示为两个正斜杠。
Sparr

我在Ubuntu 12.10中获得了\ u @ \ h:\ w(<b> h </ b> ost,<b> w </ b> orking目录中的<b> u </ b> ser),但是我无法重现问题。
亨内斯13-3-28

不,在任何情况下检查密码时,我总是会// //总是收到。回声$ PS1我得到:\ [\ e] 0; \ u @ \ h:\ w \ a \] $ {debian_chroot:+($ debian_chroot)} \ u @ \ h:\ w \ $
Dimitris Theodoridis

我只是手动设置了PS1,所以不能用两个斜杠来复制它。奇怪的。没有1、3或4。只有2。我不知所措。
Hennes

也许来自unix.stackexchange的评论是答案: 我相信Windows POSIX兼容API还将// UNC ///与UNC路径\\ remote \ ...格式相同。– Stephen P 2011年1月20
Hennes
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.