Cosa significa // in un percorso?


9

Stavo lavorando nel mio terminale, quando ho sbagliato cda scrivere a root ( /). Per inciso, ho digitato //e sono arrivato al terminale:

root@weblocalhost://#

Quando scrivo pwd, ricevo risposta //ma quando ls -sscrivo ho lo stesso elenco della /directory.

Quando digiti più di 2, ovvero ///ottieni:

root@weblocalhost:/#

Sempre 1 ad /eccezione di 2. C'è qualche differenza e a cosa serve //?

Risposte:


8

/ è equivalente a //

Dalla specifica POSIX (enfasi aggiunta):

3.267 Pathname

Una stringa utilizzata per identificare un file. Nel contesto di POSIX.1-2008, un percorso può essere limitato a {PATH_MAX} byte, incluso il byte null di terminazione. Ha <slash> caratteri iniziali opzionali , seguiti da zero o più nomi di file separati da <slash> caratteri. Un percorso può contenere facoltativamente uno o più <slash>caratteri finali . Più <slash>personaggi successivi sono considerati uguali a uno <slash>, tranne nel caso di esattamente due <slash>personaggi principali .

E :

4.12 Risoluzione percorso

...
Un percorso composto da un singolo <slash>deve essere risolto nella directory principale del processo. Un percorso null non deve essere risolto con successo. Se un nome di percorso inizia con due <slash>caratteri successivi , il primo componente che segue i <slash>caratteri iniziali può essere interpretato in modo definito dall'implementazione, sebbene più di due <slash>caratteri iniziali vengano trattati come un singolo <slash> carattere.

Per una bella discussione sulle eccezioni (cygwin e directory), vedi: In che modo Linux gestisce più separatori di percorsi consecutivi (/ home //// username /// file)?


4

È possibile aggiungere più barre a una directory e non cambierà nulla.

Ad esempio, questi tre comandi fanno tutti lo stesso:
cd /home
cd /home/
cd /home//

Dopo una di queste, la mia directory di lavoro corrente è impostata su / home (verifica con pwd).

Mi immagino di avere il prompt configurato per fare qualcosa di intelligente e che è stato eseguito in un comportamento imprevisto. Cosa ottieni quando echo $PS1?

Link a un commento su https://unix.stackexchange.com/ che può spiegarlo.


La mia PS1 in bash su OSX è "\ h: \ W \ u \ $" e ho anche questo strano comportamento. / e /// e //// e ///// appaiono tutti come /, ma il caso speciale di due barre in avanti viene visualizzato come due barre in avanti.
Sparr,

Ho ottenuto \ u @ \ h: \ w (<b> u </b> ser su <b> h </b> ost, <b> w </b> orking dir) in Ubuntu 12.10 ma non riesco a riprodurre il problema.
Hennes,

no ottengo sempre // quando controllo pwd in ogni caso. per l'eco $ PS1 ottengo: \ [\ e] 0; \ u @ \ h: \ w \ a \] $ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $
Dimitris Theodoridis

Ho appena impostato manualmente la mia PS1 e non riesco a riprodurla con due barre. Strano. Non con 1, 3 o 4. Solo con 2. Non riesco a spiegarlo.
Hennes,

Forse questo commento di unix.stackexchange è la risposta: credo che le API compatibili con POSIX di Windows tratteranno anche // remote / ... lo stesso del percorso UNC \\ remote \ .... - Stephen P, 20 gennaio 11 alle 0:39
Hennes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.