cd
根(/
)拼写错误时,我正在终端中工作。偶然,我打了个电话//
,进入了终端:
root@weblocalhost://#
当我键入时pwd
,我会得到响应,//
但是当我键入时,我会ls -s
得到与/
目录中相同的列表。
当您键入大于2时,即///
得到:
root@weblocalhost:/#
/
除2之外,总是1。有什么区别//
吗?
cd
根(/
)拼写错误时,我正在终端中工作。偶然,我打了个电话//
,进入了终端:
root@weblocalhost://#
当我键入时pwd
,我会得到响应,//
但是当我键入时,我会ls -s
得到与/
目录中相同的列表。
当您键入大于2时,即///
得到:
root@weblocalhost:/#
/
除2之外,总是1。有什么区别//
吗?
Answers:
/
相当于 //
从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)?
您可以在目录中添加多个斜杠,并且不会改变任何内容。
例如,这三个命令都执行相同的操作:
cd /home
cd /home/
cd /home//
在完成所有这些操作之后,我当前的工作目录将设置为/ home(使用进行检查pwd
)。
我猜您已将您的提示配置为执行某些智能操作,并且遇到了意外行为。你什么时候会得到什么echo $PS1
?