Я работал в терминале, когда неправильно написал while cd
для root ( /
). Случайно я набрал //
и попал в терминал:
root@weblocalhost://#
Когда я печатаю pwd
, я получаю ответ //
, но когда я печатаю, ls -s
я получаю тот же список, что и в /
справочнике.
При вводе более 2, т.е. ///
вы получите:
root@weblocalhost:/#
Всегда 1, /
за исключением 2. Есть ли разница и //
для чего она?
решение1
/
эквивалентно//
Отспецификация POSIX(выделено мной):
3.267 Имя пути
Строка, используемая для идентификации файла. В контексте POSIX.1-2008 имя пути может быть ограничено {PATH_MAX} байтами, включая завершающий нулевой байт. Оно имеет необязательные начальные
<slash>
символы, за которыми следует ноль или более имен файлов, разделенных<slash>
символами. Имя пути может необязательно содержать один или более конечных<slash>
символов.Несколько последовательных<slash>
символов считаются одинаковыми, как один<slash>
, за исключением случая, когда начальных<slash>
символов ровно два.
И:
4.12 Разрешение имени пути
...
Имя пути, состоящее из одного,<slash>
должно разрешаться в корневой каталог процесса. Пустое имя пути не должно быть успешно разрешено.Если имя пути начинается с двух последовательных<slash>
символов, первый компонент, следующий за ведущими<slash>
символами, может интерпретироваться в зависимости от реализации, хотя более двух ведущих<slash>
символов должны рассматриваться как один<slash>
символ.
Подробное обсуждение исключений (cygwin и каталоги) см. здесь:Как Linux обрабатывает несколько последовательных разделителей пути (/home////username///file)?
решение2
Вы можете добавить несколько слешей в каталог, и это ничего не изменит. Например, эти три команды делают одно и то же:
cd /home
cd /home/
cd /home//
После любого из этих действий мой текущий рабочий каталог устанавливается в /home (проверьте с помощью pwd
).
япредполагатьчто у вас настроена подсказкасделай что-нибудь умноеи что вы столкнулись с непредвиденным поведением. Что вы получаете, когда вы echo $PS1
?
Проверятьэтот комментарий на unix.stackexchange.comчто может это объяснить.