2

Я только что нашел очень странную функцию (ошибка?) с файловой системой моего компьютера. Я могу сделать cd // и он перейдет в каталог // , но отобразит все те же файлы, что и каталог / . Почему это? Если я cd .. то время как в / , он останется в / . // работает только один - я пробовал несколько слэшей, но он остается в / .

3 ответа3

9

Из спецификации POSIX:

3.266: ... Несколько последовательных слешей считаются такими же, как один слеш.

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

Вторая часть означает, что путь, начинающийся с //, может иметь особое значение. Это редко, если вообще используется, и может быть источником ошибок: https://stackoverflow.com/a/7816833/163956.

0

Нет разницы между // и /. Просто bash терпимо относится к нескольким слэшам.

Обратите внимание, что вы также можете использовать // в путях, и он не будет жаловаться, и он будет обрабатывать их как /.

0

Похоже, что Bash нормализует имена путей, но не нормализует двойные слэши в начале пути. Это понятно, поскольку в некоторых системах Unix (хотя и не в Mac OS X)// может указывать сетевой путь, а Bash предназначен для переносимости. Смотрите этот вопрос по Unix.SE для двойной косой черты.

Поскольку в Mac OS X // не имеет особого значения, вы на самом деле находитесь в / .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .