Это можно рассмотреть либо.
В Linux //
ничего не значит - несколько последовательных слешей свернуты в один, в любом месте пути, включая начало. Если вы измените каталог на //
вы попадете в /
, как сказал бы запуск readlink /proc/self/cwd
; аналогично, /usr//local///bin
свернут в /usr/local/bin
.
Однако некоторые другие Unix-подобные системы, например Cygwin или старая Apollo Domain/OS, используют префикс //
для сетевых путей, например //fileserver/path/to/data
. POSIX также позволяет это.
По разным причинам оболочка bash самостоятельно отслеживает текущий каталог (в дополнение к отслеживанию, предоставляемому операционной системой) и содержит код, который предотвращает свертывание исходного //
, чтобы оставаться совместимым с такими системами. "Особенность" в том , что Баш обеспечивает более интуитивное отслеживание текущего каталога, например, когда cd
- Инг в линк, Баш покажет вам путь , который вы ожидаете, даже если ядро думает иначе. "Ошибка" заключается в том, что bash разрешает //
даже в системах, которые его не используют.