Qu'est-ce que le répertoire «//»?

12

Sur diverses machines Linux, vous pouvez

cd /

et

cd //

Le shell dira que le répertoire courant est '/' ou '//' après avoir utilisé la commande correspondante.

La question est donc la suivante: quelle est la différence entre '/' et '//', et si la réponse est 'aucune différence', alors pourquoi '//' est-il affiché différemment de '/'

BTW

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

Tous les résultats dans le shell indiquant que le répertoire actuel est «/»

Voici un exemple de session:

[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$
sylvanaar
la source
2
Cela semble être une anomalie spécifique à bash. Si vous essayez cd //dans csh ou zsh et que pwdcela montrera juste '/'
Doug Harris
intéressant - qui éclaire
sylvanaar
1
A titre de comparaison: cd //usr/bindonne "// usr / bin", mais cd /usr//bindonne "/ usr / bin" (en Bash).
pause jusqu'à nouvel ordre.

Réponses:

14

Demandons à l'homme lui-même (Chester Ramey):

E10) Pourquoi 'cd //' laisse-t-il $ PWD '//'?

POSIX.2, dans sa description de «cd», indique que trois barres obliques ou plus peuvent être remplacées par une seule barre oblique lors de la canonisation du répertoire de travail actuel.

C'est, je présume, pour la compatibilité historique. Certaines versions d'Unix, et les premiers systèmes de fichiers réseau, utilisaient des chemins d'accès de la forme // hostname / path pour accéder à 'path' sur le serveur 'hostname'.

En pause jusqu'à nouvel ordre.
la source
Réponse bien meilleure que celle (déjà assez bonne) de John T.
innaM
9

Ce n'est pas un répertoire réel, c'est un problème spécifique à bash. Il est référencé dans The Linux Documentation Project .

John T
la source
4
pourquoi personne ne l'a réparé? ou l'ont-ils?
sylvanaar