Подвійна коренева папка проти однієї кореневої папки


14

У моєму вікні Linux, в bash, я маю доступ до папки "подвійний корінь", позначеної двома передніми косою рисою:

tomas:~ $ cd /
tomas:/ $ ls
bin/ cdrom@ ...
tomas:/ $ cd //
tomas:// $ ls 
bin/ cdrom@ ...

Вміст папки та її підпапки ідентичний «нормальному» корінцю косої риски. Подвійний косий ривок не зникає, коли я отримую доступ до його папок. Аномалія не повторюється з трьома і більше нахилами; це прості синоніми кореня:

tomas:// $ cd home/tomas
tomas://home/tomas $ cd ///
tomas:/ $ cd ////
tomas:/ $

Яке це місце? Це помилка? Хтось може пояснити аномалію?


гарне запитання - я помітив таку саму поведінку, але ніколи не запитував, чому це відбувається.
lajuette

Відповіді:


18

Від Bash FAQ E10 :

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

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

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


1
Домен / ОС - одна з таких систем.
користувач1686

1
Реч з подвійною косою рисою все ще використовується. Це частина Універсальної (або Єдиної; я не можу знайти першоджерело) Конвенції про іменування або ООН. Він з'являється в Windows, Unix та Linux. Це може бути причиною використання подвійної косої риски в URL-адресах.
Ісаак Рабінович

1

"Це не помилка, це особливість!"

Ви все ще в одному кореневому каталозі. Я не знаю витоків цього, але підозрюю, що це може мати щось спільне зі створенням рядків для абсолютних шляхів. Якщо хтось знає напевно, підключіть.


0

Кілька косої риски просто ігноруються інструментами, які ви використовували, і ви завжди переходите до однієї кореневої папки.


То чому баш змінюється /// на / поки покидає // як є?
Томаш

0

Кілька косої риски розглядаються як одна косою косою рисою з метою вирішення імені.

Те, що ви бачите в підказці оболонки, - це артефакт обробки bash PS1 (див. Розділ "ЗАБОРОНЕННЯ" на сторінці bash).

[root@linux /]# cd /    ; echo $PWD
/
[root@linux /]# cd //   ; echo $PWD
//
[root@linux //]# cd /// ; echo $PWD
/
[root@linux /]# cd //// ; echo $PWD
/

Результат - лише питання презентації; ви завжди в одному кореневому каталозі. Ви можете перевірити це, подивившись /proc/$$/root.

[ред.] Ну, я ніколи цього не знав: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 Значення "//" не визначене стандартами, але "///" і більше косої риси еквівалентно "/".

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