Вопрос: Почему работает путь «//»?


Протестировано на debian и debian-based:

$ cd // && pwd && ls
//
bin   build  dev  home ...

Почему путь // допустимый путь?


6
2018-04-16 10:04


Источник




Ответы:


Согласно Спецификация POSIX:

A pathname that begins with two successive slashes may be interpreted in an
implementation-defined manner, although more than two leading slashes shall be
treated as a single slash.

Я предполагаю, что bash разрешает два слэша на одну косую черту, поэтому они оба означают одно и то же. И согласно спецификации, cd /// должен также давать тот же результат.

Вы можете проверить номер inode текущего каталога, используя

stat -c "%i" .

и вы заметите, что число inode / а также // одинаковы.


12
2018-04-16 10:18



Я сомневаюсь, что это делает. Я скорее думаю, что это работа ядра ... - glglgl
Специфика // не обязательно = / зарезервирована для среды Windows POSIX, для которой // начинается UNC-имя. Cygwin также ведет себя так. - joshudson
@joshudson Не забывайте также, что URI /a/b/c является относительным URI, тогда как URI //a/b/c является абсолютным, и a это имя хоста. - Joker_vD


Этот вопрос уже ответил Вот,

В большинстве случаев POSIX систем, множественные слэши просто игнорируются.


5
2018-04-16 10:13



Мы действительно предпочитаем, чтобы ответы содержали контент, не содержащий указателей на контент. Хотя это теоретически может ответить на вопрос, было бы предпочтительнее чтобы включить здесь основные части ответа и предоставить ссылку для справки. - Iain