Почему допустим путь с большим количеством корневых слешей?

377
Meowxiik

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

Возможные рабочие каталоги:

[user@host /]$ cd // [user@host //]$ pwd # Results in double root // [user@host //]$ cd srv/ftp [user@host ftp]$ pwd # Double root is preserved but no other effects observed //srv/ftp [user@host /]$ cd //// [user@host /]$ cd /////// [user@host /]$ cd ////////// # Additional slashes change nothing [user@host /]$  

Почему это происходит? Как это вообще действует?

(Замечено на хосте Linux 4.18.16-arch1-1-ARCH # 1 PREEMPT SMP 20 октября 22:06:45 UTC 2018 x86_64 GNU / Linux)

3
Очень актуально: [В каких системах // foo / bar отличается от /foo/bar?](https://unix.stackexchange.com/q/256497/23408) Scott 6 лет назад 0

1 ответ на вопрос

0
Meowxiik

Ну я нашел ответ после лучшего поиска, получается:

Допускается несколько косых черт, и они эквивалентны одной косой черте. Из спецификации Single Unix (версия 3), базовые определения §3.266 pathname: «Несколько последовательных слешей считаются одинаковыми как один слеш».

Есть одно исключение: если имя пути начинается ровно с двух слешей, оно может обрабатываться по-разному (см .: базовые определения §4.11 разрешение имени пути). Сам Linux не делает этого, хотя некоторые приложения могут, а другие системы Unix-ish (например, Cygwin).

Источник: https://unix.stackexchange.com/a/1919/276644

Похожие вопросы