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。有什么区别//
吗?有什么区别?
/
相当于 //
来自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)?
您可以向目录添加多个斜杠,但它不会改变任何内容。例如,这三个命令都执行相同的操作:
cd /home
cd /home/
cd /home//
Run Code Online (Sandbox Code Playgroud)
在执行上述任何操作之后,我当前的工作目录将设置为 /home (使用 进行检查pwd
)。
我猜您已将提示配置为执行一些智能操作,并且遇到了意外行为。当你的时候你会得到什么echo $PS1
?
检查unix.stackexchange.com 上的评论,它可能会解释它。
归档时间: |
|
查看次数: |
1267 次 |
最近记录: |