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

Dim*_*dis 9 command-line paths

我正在我的终端工作,当我拼错cd了 root ( /) 时。偶然地,我打字//并进入了终端:

root@weblocalhost://#
Run Code Online (Sandbox Code Playgroud)

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

当您输入 2 个以上时,即///您得到:

root@weblocalhost:/#
Run Code Online (Sandbox Code Playgroud)

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

Pan*_*her 8

/ 相当于 //

来自POSIX 规范(强调):

3.267 路径名

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

并且

4.12 路径名解析

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

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


Hen*_*nes 4

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

cd /home
cd /home/
cd /home//
Run Code Online (Sandbox Code Playgroud)

在执行上述任何操作之后,我当前的工作目录将设置为 /home (使用 进行检查pwd)。

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

检查unix.stackexchange.com 上的评论,它可能会解释它。