Я только что нашел очень странную функцию (ошибка?) с файловой системой моего компьютера. Я могу сделать 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 //
не имеет особого значения, вы на самом деле находитесь в /
.