Я только что нашел очень странную функцию (ошибка?) с файловой системой моего компьютера. Я могу сделать cd // и он перейдет в каталог // , но отобразит все те же файлы, что и каталог / . Почему это? Если я cd .. то время как в / , он останется в / . // работает только один - я пробовал несколько слэшей, но он остается в / .
3 ответа
3.266: ... Несколько последовательных слешей считаются такими же, как один слеш.
4.11: ... Имя пути, начинающееся с двух последовательных слешей, может интерпретироваться способом, определяемым реализацией, хотя более двух ведущих слешей следует обрабатывать как один слеш.
Вторая часть означает, что путь, начинающийся с //, может иметь особое значение. Это редко, если вообще используется, и может быть источником ошибок: https://stackoverflow.com/a/7816833/163956.
Нет разницы между // и /. Просто bash терпимо относится к нескольким слэшам.
Обратите внимание, что вы также можете использовать // в путях, и он не будет жаловаться, и он будет обрабатывать их как /.
Похоже, что Bash нормализует имена путей, но не нормализует двойные слэши в начале пути. Это понятно, поскольку в некоторых системах Unix (хотя и не в Mac OS X)// может указывать сетевой путь, а Bash предназначен для переносимости. Смотрите этот вопрос по Unix.SE для двойной косой черты.
Поскольку в Mac OS X // не имеет особого значения, вы на самом деле находитесь в / .
