2013-12-19 8 views
27

Я вошел в команду cd // вместо cd / по ошибке, и вместо того, чтобы получить ошибку, как я бы ожидать оболочки (Bash) показал подсказку, как будто я нахожусь в каталоге //: -Что такое double slash // в `cd //` означает в Linux?

<username>@<hostname>://$ 
<username>@<hostname>://$ pwd 
// 

Список содержимого каталога показывает, что он совпадает с /.

Итак, что именно cd // делать и в чем отличие от cd /?

+2

Нет никакой разницы. Попробуйте "//////////", это сработает. –

+2

«//////////» работает, но я получаю другое приглашение с одним «/». – vitaut

+7

Принадлежит к стеку Linux, это явно не по теме. –

ответ

36

На самом деле это ничего не значит и игнорируется.

От Bash FAQ E10::

E10) Почему 'кд //' отпуск $ PWD как '//'?

POSIX.2, в описании «cd», говорит, что три или более ведущих косые черты могут быть заменены одной косой чертой при канонизации рабочего каталога .

Это, я полагаю, для исторической совместимости. Некоторые версии Unix, а также ранние сетевые файловые системы, используемые пути формы // имя_хоста/пути для доступа к «пути» на сервере «имя хоста».

Также Unix standards состояния:

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

15

Этот answer на AskUbuntu подтверждает, что они являются тем же самым каталогом. Кроме того, он помогает котировки из POSIX Pathname Resolution specification:

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