Что такое каталог с двойной косой чертой (//)?

29

Я по ошибке набрал cd //вместо cd /. К моему удивлению, текущий каталог обнаружился как //.

Что это за каталог? Почему это существует?

apple@snipped $ pwd
/home/apple
apple@snipped $ cd /
apple@snipped $ pwd
/
apple@snipped $ cd //
apple@snipped $ pwd
//
apple@snipped $ cd ///
apple@snipped $ pwd
/
Zabba
источник

Ответы:

42

//обычно такой же как /. ///должен быть таким же как /.

lsпоказал бы вам, что cd //взял вас в корневой каталог, так же, как и cd /делает.

$ cd /
$ ls
bin
boot
dev
...
$ cd //
$ ls
(same as above)

Технический способ подтвердить, что они определенно находятся в одном каталоге:

$ cd /
$ stat -c "%i" .
2
$ cd //
$ stat -c "%i" .
2

они будут печатать один и тот же номер инода, означая, что это одно и то же.

Подробности подробно описаны в спецификации разрешения пути POSIX :

Путь, состоящий из одной косой черты, должен преобразовываться в корневой каталог процесса. Нулевой путь не может быть успешно разрешен. Имя пути, начинающееся с двух последовательных слешей, может интерпретироваться способом, определяемым реализацией, хотя более двух ведущих слешей следует обрабатывать как один слеш.

Mikel
источник