GNU/Linux >> Tutoriels Linux >  >> Linux

Unix, différence entre le chemin commençant par '/' et '//' ?

Cette question a déjà des réponses ici :Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

(6 réponses)
Fermé il y a 3 ans.

Sous unix/linux, n'importe quel nombre de barres obliques consécutives dans un chemin équivaut généralement à une seule barre oblique. ex.

$ cd /home/shum
$ pwd
/home/shum
$ cd /home//shum
$ pwd
/home/shum
$ cd /home///shum
$ pwd
/home/shum

Pourtant, pour une raison quelconque, deux barres obliques au début d'un chemin absolu sont traitées spécialement. ex.

$ cd ////home
$ pwd
/home
$ cd ///
$ pwd
/
$ cd //
$ pwd
//
$ cd home//shum
$ pwd
//home/shum

Tout autre nombre de barres obliques consécutives n'importe où ailleurs dans un correctif est tronqué, mais deux au début resteront, même si vous naviguez ensuite dans le système de fichiers par rapport à celui-ci.

Pourquoi est-ce? Y a-t-il une différence entre /… et //… ?

Réponse acceptée :

Pour la plupart, des barres obliques répétées dans un chemin équivalent à une seule barre oblique. Ce comportement est mandaté par POSIX et la plupart des applications emboîtent le pas. L'exception est qu'"un nom de chemin qui commence par deux barres obliques successives peut être interprété d'une manière définie par l'implémentation" (mais ///foo est équivalent à /foo ).

La plupart des unix ne font rien de spécial avec deux barres obliques initiales. Linux, en particulier, ne le fait pas. Cygwin fait ://hostname/path accède à un lecteur réseau (SMB).

Ce que vous voyez n'est pas, en fait, Linux faisant quelque chose de spécial avec // :c'est le suivi du répertoire actuel de bash. Comparez :

$ bash -c 'cd //; pwd'
//
$ bash -c 'cd //; /bin/pwd'
/

Bash prend la précaution que le système d'exploitation pourrait traiter // spécialement et en le gardant. Dash fait de même. Ksh et zsh ne fonctionnent pas sous Linux, je suppose (je n'ai pas vérifié) qu'ils ont un paramètre de compilation.


Linux
  1. Quelle est la différence entre /sbin/nologin et /bin/false ?

  2. Pourquoi ‘/’ a-t-il une entrée ‘..’ ?

  3. Différence entre /var/log/messages, /var/log/syslog et /var/log/kern.log ?

  4. Différence entre les chemins absolus et relatifs sous Linux

  5. Installer les binaires dans /bin, /sbin, /usr/bin et /usr/sbin, interactions avec --prefix et DESTDIR

Quelle est la différence entre Linux et Unix ?

La différence entre /opt et /usr/local ?

La différence entre '$ . Foo' Et '$ ./foo' ? ?

Différence entre /bin et /usr/bin

Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

Différence entre /etc/hosts et /etc/resolv.conf