GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unix, Unterschied zwischen Pfad beginnend mit „/“ und „//“?

Für diese Frage gibt es hier bereits Antworten :Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////Benutzername///Datei)?

(6 Antworten)
Vor 3 Jahren geschlossen.

Unter Unix/Linux entspricht eine beliebige Anzahl aufeinanderfolgender Schrägstriche in einem Pfad im Allgemeinen einem einzelnen Schrägstrich. zB.

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

Doch aus irgendeinem Grund werden zwei Schrägstriche am Anfang eines absoluten Pfads besonders behandelt. zB.

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

Jede andere Anzahl aufeinanderfolgender Schrägstriche an anderer Stelle in einem Patch wird abgeschnitten, aber zwei am Anfang bleiben bestehen, selbst wenn Sie dann relativ dazu im Dateisystem herumnavigieren.

Warum ist das? Gibt es einen Unterschied zwischen /… und //… ?

Akzeptierte Antwort:

Wiederholte Schrägstriche in einem Pfad entsprechen größtenteils einem einzelnen Schrägstrich. Dieses Verhalten wird von POSIX vorgeschrieben und die meisten Anwendungen folgen diesem Beispiel. Die Ausnahme ist, dass „ein Pfadname, der mit zwei aufeinanderfolgenden Schrägstrichen beginnt, in einer implementierungsdefinierten Weise interpretiert werden kann“ (aber ///foo entspricht /foo ).

Die meisten Unices machen nichts Besonderes mit zwei anfänglichen Schrägstrichen. Insbesondere Linux nicht. Cygwin tut://hostname/path greift auf ein Netzlaufwerk (SMB) zu.

Was Sie sehen, ist eigentlich nicht, dass Linux irgendetwas Besonderes mit // macht :Es ist die aktuelle Verzeichnisverfolgung von bash. Vergleichen Sie:

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

Bash trifft die Vorsichtsmaßnahme, dass das Betriebssystem // behandeln könnte besonders und halten es. Dash tut dasselbe. Ksh und zsh tun dies nicht, wenn sie unter Linux laufen, ich schätze (ich habe es nicht überprüft), sie haben eine Einstellung zur Kompilierzeit.


Linux
  1. Unterschied zwischen /bin/false &/sbin/nologin

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Was ist der Unterschied zwischen /sbin/nologin und /bin/false?

  4. Der Unterschied zwischen /opt und /usr/local?

  5. Der Unterschied zwischen „$ . Foo‘ und ‚$ ./foo‘??

Was ist der Unterschied zwischen Linux und Unix?

Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

Was ist der Unterschied zwischen #!/usr/bin/env bash und #!/usr/bin/bash?

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Unterschied zwischen /etc/crontab und crontab -e

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0