Was bedeutet // in einem Pfad?

Was bedeutet // in einem Pfad?

Ich habe in meinem Terminal gearbeitet, als ich while cdto root ( /) falsch geschrieben habe. Aus Versehen habe ich Folgendes eingegeben //und bin ins Terminal gekommen:

root@weblocalhost://#

Wenn ich tippe pwd, bekomme ich eine Antwort //, aber wenn ich tippe, ls -serhalte ich dieselbe Liste wie im /Verzeichnis.

Wenn Sie mehr als 2 eingeben, ///erhalten Sie:

root@weblocalhost:/#

Immer 1, /außer 2. Gibt es da einen Unterschied und wofür ist das //?

Antwort1

/ist äquivalent zu//

Ausdie POSIX-Spezifikation(Betonung hinzugefügt):

3.267 Pfadname

Eine Zeichenfolge, die zur Identifizierung einer Datei verwendet wird. Im Kontext von POSIX.1-2008 kann ein Pfadname auf {PATH_MAX} Bytes begrenzt sein, einschließlich des abschließenden Nullbytes. Er hat optionale Anfangszeichen <slash> , gefolgt von null oder mehr durch <slash> Zeichen getrennten Dateinamen. Ein Pfadname kann optional ein oder mehrere nachfolgende <slash>Zeichen enthalten.Mehrere aufeinanderfolgende <slash>Zeichen werden als ein und dasselbe angesehen <slash>, außer im Fall von genau zwei führenden <slash>Zeichen.

Und:

4.12 Pfadnamenauflösung

...
Ein Pfadname, der aus einer einzigen Zahl besteht, <slash>wird zum Stammverzeichnis des Prozesses aufgelöst. Ein Null-Pfadname wird nicht erfolgreich aufgelöst.Wenn ein Pfadname mit zwei aufeinanderfolgenden <slash>Zeichen beginnt, kann die erste Komponente nach den führenden <slash>Zeichen auf eine implementierungsdefinierte Weise interpretiert werden, obwohl mehr als zwei führende <slash>Zeichen als ein einzelnes Zeichen behandelt werden sollen <slash> .

Eine gute Erörterung der Ausnahmen (Cygwin und Verzeichnisse) finden Sie unter:Wie geht Linux mit mehreren aufeinanderfolgenden Pfadtrennzeichen um (/home////Benutzername///Datei)?

Antwort2

Sie können einem Verzeichnis mehrere Schrägstriche hinzufügen, ohne dass sich etwas ändert. Diese drei Befehle bewirken beispielsweise alle dasselbe:

cd /home
cd /home/
cd /home//

Nach all diesen Schritten wird mein aktuelles Arbeitsverzeichnis auf /home festgelegt (überprüfen Sie dies mit pwd).

ICHerratendass Sie Ihre Eingabeaufforderung so konfiguriert haben,mach was schlauesund dass Sie auf unerwartetes Verhalten gestoßen sind. Was bekommen Sie, wenn Sie echo $PS1?

Überprüfendieser Kommentar auf unix.stackexchange.comwas es erklären könnte.

verwandte Informationen