路径中的 // 是什么意思?

路径中的 // 是什么意思?

我在终端上工作时,拼错了 while cdto root ( /)。我无意中输入了以下内容,//然后在终端中看到:

root@weblocalhost://#

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

当您输入超过 2 时,即///您会得到:

root@weblocalhost:/#

除 2 外始终/为 1。有什么区别吗?//用途是什么?

答案1

/相当于//

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)?

答案2

您可以在目录中添加多个斜杠,这不会改变任何内容。例如,以下三个命令都执行相同的操作:

cd /home
cd /home/
cd /home//

完成上述任何一项后,我的当前工作目录将设置为 /home(使用 检查pwd)。

猜测您的提示已配置为做些聪明的事并且您遇到了意料之外的行为。当您 时,您会得到什么echo $PS1

查看unix.stackexchange.com 上的此评论这或许可以解释这一点。

相关内容