Qu'est-ce que le répertoire double barre oblique (//)?

29

J'ai tapé par erreur cd //au lieu de cd /. À ma grande surprise, le répertoire actuel est apparu comme //.

Quel est ce répertoire? Pourquoi existe-t-il?

apple@snipped $ pwd
/home/apple
apple@snipped $ cd /
apple@snipped $ pwd
/
apple@snipped $ cd //
apple@snipped $ pwd
//
apple@snipped $ cd ///
apple@snipped $ pwd
/
Zabba
la source

Réponses:

42

//est généralement le même que /. ///doit être le même que /.

lsvous aurait montré qui cd //vous a amené au répertoire racine, de la même manière cd /que.

$ cd /
$ ls
bin
boot
dev
...
$ cd //
$ ls
(same as above)

La façon technique de confirmer qu'il s'agit bien du même répertoire est:

$ cd /
$ stat -c "%i" .
2
$ cd //
$ stat -c "%i" .
2

ils imprimeront le même numéro d'inode, ce qui signifie qu'ils sont la même chose.

Les détails sanglants sont documentés dans la spécification POSIX Pathname Resolution :

Un chemin d'accès composé d'une seule barre oblique doit être résolu dans le répertoire racine du processus. Un chemin d'accès nul ne doit pas être résolu avec succès. Un chemin qui commence par deux barres obliques successives peut être interprété d'une manière définie par l'implémentation, bien que plus de deux barres obliques de tête soient traitées comme une seule barre oblique.

Mikel
la source