Ich habe in meinem Terminal gearbeitet, als ich while cd
to 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 -s
erhalte 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.