Що таке каталог "//"?


12

На різних машинах Linux ви можете

cd /

і

cd //

Оболонка скаже, що поточний каталог є "/" або "//" після використання відповідної команди.

Отже, питання полягає в тому, яка різниця між "/" та "//", і якщо відповідь "немає різниці", то чому "//" відображається інакше, ніж "/"

До речі

cd ///
cd ////
cd /////

Увесь результат в оболонці говорить про те, що поточний каталог - '/'

Ось приклад сесії:

[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$

2
Це, мабуть, є специфічною для баш аномалії. Якщо ви спробуєте cd //в csh чи zsh, то pwdвін покаже просто '/'
Doug Harris

цікаво - що проливає на це світло
sylvanaar

1
Для порівняння: cd //usr/binдає "// usr / bin", але cd /usr//binдає "/ usr / bin" (в Bash).
Призупинено до подальшого повідомлення.

Відповіді:


14

Давайте запитаємо самого чоловіка (Честер Рамі):

E10) Чому 'cd //' залишає $ PWD як '//'?

POSIX.2, в своєму описі "cd", говорить про те, що три або більше провідних косої риски можуть бути замінені однією косою рисою при канонізації поточного робочого каталогу.

Це, я припускаю, для історичної сумісності. Деякі версії Unix та ранніх мережевих файлових систем використовували шляхи форми // ім'я хоста / шлях для доступу до "шлях" на "ім'я хоста" сервера.


Набагато краща відповідь, ніж (вже досить гарна) від Джона Т.
innaM

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.