Что означает двойной слэш//в `cd//` в Linux?
Я ввел команду cd //
вместо cd /
по ошибке и вместо того, чтобы получить ошибку, так как я ожидал, что оболочка (Bash) покажет приглашение, как если бы я был в //
каталог: -
<username>@<hostname>://$
<username>@<hostname>://$ pwd
//
Список содержимого каталога показывает, что он совпадает с /
.
Итак, что именно делает cd //
и чем отличается от cd /
?
Ответы
Ответ 1
На самом деле это ничего не значит и игнорируется.
Из Bash FAQ E10::
E10) Почему 'cd//' оставляет $PWD как '//'?
POSIX.2, в описании "cd", говорит, что три или более ведущих косые черты могут быть заменены одной косой чертой при канонизации текущий рабочий каталог.
Это, я полагаю, для исторической совместимости. Некоторые версии Unix и ранних сетевых файловых систем, использовали пути формы //hostname/path для доступа к "пути" на сервере "hostname".
Кроме того, стандарты Unix гласят:
Путь, начинающийся с двух последовательных косых черт, может быть интерпретирован в соответствии с реализацией, хотя более двух ведущих косые черты должны рассматриваться как одна косая черта.
Ответ 2
Этот ответ на AskUbuntu подтверждает, что они являются одним и тем же каталогом. Кроме того, он помогает использовать Спецификацию разрешения имен POSIX:
Путь, состоящий из одной косой черты, должен разрешаться в корневой каталог процесса. Нулевой путь не будет успешно разрешен. Имя пути, начинающееся с двух последовательных косых черт, может быть интерпретировано в соответствии с реализацией, хотя более двух ведущих косых черт следует рассматривать как одну косую черту.