Pracoval jsem ve svém terminálu, když jsem při cd
napsal chybně do rootu (/
). Náhodou jsem zadal //
a dostal jsem se do terminálu:
[email protected]://#
Když napíšu pwd
, dostávám odpověď //
ale když napíšu ls -s
mám stejný seznam jako v /
adresář.
Když zadáte více než 2, tj. ///
dostanete:
[email protected]:/#
Vždy 1 /
kromě 2. Existuje nějaký rozdíl a co je //
pro?
Nejlepší odpověď
/
je ekvivalentní //
Ze specifikace POSIX (zvýraznění přidáno):
3.267 Cesta
Řetězec, který se používá k identifikaci souboru. V kontextu
POSIX.1-2008 může být název cesty omezen na {PATH_MAX} bajtů, včetně
ukončovacího prázdného bajtu. Má volitelný začátek<slash>
znaků, za nimiž následuje nula nebo více názvů souborů oddělených<slash>
znaky. Cesta může volitelně obsahovat jeden nebo více koncových<slash>
znaky. Více po sobě jdoucích<slash>
znaky jsou
považovány za stejné jako jeden<slash>
, s výjimkou případu
přesně dvou úvodních<slash>
znaky.
A:
4.12 Rozlišení názvu cesty
…
Cesta skládající se z jednoho<slash>
se přenese do kořenového
adresáře procesu. Nulová cesta nebude úspěšně
vyřešena. Pokud cesta začíná dvěma po sobě jdoucími<slash>
znaky,
první složka za úvodním<slash>
znaky mohou být
interpretovány způsobem definovaným implementací, i když více než
dva úvodní<slash>
znaky budou považovány za jeden<slash>
postava.
Pěknou diskuzi o výjimkách (cygwin a adresáře) najdete v:Jak linux zpracovává více po sobě jdoucích oddělovačů cest (/home////uživatelské jméno///soubor)?