2014-10-20 30 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