2014-10-20 32 views
6

我注意到在bash/zsh中,如果我使用cd //,它会将我置于名称为“//”的目录中--pwd显示以及我的提示。//在bash中有什么意义?

如果我使用两个以上的斜杠,如cd ///等,它只是让我在/。

对bash中的目录//有意义吗?

+4

漂亮相关:[unix,以'/'和'//'开头的路径之间的区别(http://unix.stackexchange.com/q/12283/40596) – fedorqui 2014-10-20 16:02:21

回答

10

POSIX标准告诉//可能是由符合的操作系统来解释一种特定的方式,而///相当于/

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_12

如果路径有两个连续的字符开头,第一可以用实现定义的方式来解释跟在前导字符之后的组件,尽管两个以上的前导字符应该被视为单个字符。

这就是为什么bash保持//不变,以防底层操作系统实现这个特殊含义。

+0

我发现这甚至可以与'cd//选择/ foo'。根据'pwd',当前目录是'/ opt/foo'。虽然我没有看到Kornshell或Zsh。 – 2014-10-20 18:42:18

+0

啊!我发现这是专门为在PC上运行Bash(比如通过Cygwin)设置的,其中'foo/bar'是一个共享的远程目录,而不仅仅是一个本地目录'/ foo/bar'。 – 2014-10-20 18:47:23

+0

@DavidW。更普遍的是基于网络的文件系统,这些文件系统使用//主机/目录来远程共享前缀。我想POSIX的细节早于bash/cygwin。 – jlliagre 2014-10-20 19:46:39