web-dev-qa-db-fra.com

Que signifie double barre oblique // dans `cd //` sous Linux?

J'ai entré une commande cd // au lieu de cd / par erreur et au lieu d'obtenir une erreur comme je m'attendais à ce que le Shell (Bash) affiche une invite comme si j'étais dans le // répertoire: -

<username>@<hostname>://$
<username>@<hostname>://$ pwd
//

La liste du contenu du répertoire montre qu'il est identique à /.

Alors quoi exactement cd // faire et quelle est la différence de cd /?

39
vitaut

En fait, cela ne veut rien dire et est ignoré.

Depuis le Bash FAQ E10: :

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 de la forme // hostname/path pour accéder à 'path' sur le serveur 'hostname'.

Le normes Unix indique également:

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.

49
Rahul Tripathi

Cette réponse sur AskUbuntu confirme qu'il s'agit du même répertoire. De plus, il cite utilement 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.

18
Serpentine Cougar