Co to jest katalog „//”?


12

Na różnych maszynach z linuksem możesz

cd /

i

cd //

Powłoka powie, że bieżącym katalogiem jest „/” lub „//” po użyciu odpowiedniej komendy.

Pytanie brzmi zatem: jaka jest różnica między „/” a „//”, a jeśli odpowiedź brzmi „bez różnicy”, to dlaczego „//” jest pokazane inaczej niż „/”

BTW

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

Wszystkie wyniki w powłoce mówią, że bieżący katalog to „/”

Oto przykładowa sesja:

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

2
To wydaje się być anomalią specyficzną dla bash. Jeśli spróbujesz cd //w csh lub zsh, a wtedy pwdpokaże się tylko „/”
Doug Harris,

ciekawe - rzuca na to trochę światła
sylvanaar

1
Dla porównania: cd //usr/bindaje „// usr / bin”, ale cd /usr//bindaje „/ usr / bin” (w Bash).
Wstrzymano do odwołania.

Odpowiedzi:


14

Zapytajmy samego mężczyznę (Chester Ramey):

E10) Dlaczego „cd //” pozostawia $ PWD jako „//”?

POSIX.2 w opisie „cd” mówi, że trzy lub więcej wiodących ukośników można zastąpić jednym ukośnikiem podczas kanonizacji bieżącego katalogu roboczego.

Jest to, jak sądzę, zgodność historyczna. Niektóre wersje Uniksa i wczesne sieciowe systemy plików korzystały ze ścieżek w postaci // nazwa_hosta / ścieżka, aby uzyskać dostęp do „ścieżki” na serwerze „nazwa hosta”.


Znacznie lepsza odpowiedź niż (już całkiem dobra) John T.
innaM

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.