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

Я по ошибке набрал 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
/
29
задан 23 June 2017 в 04:04

1 ответ

// обычно совпадает с /. /// должно совпадать с /.

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

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

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

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

они напечатают один и тот же номер инода, что означает, что это одно и то же.

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

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

0
ответ дан 23 June 2017 в 04:04

Другие вопросы по тегам:

Похожие вопросы: