Wenn ich an unseren RHEL-Rechnern arbeite, verwende ich sudo su -
zum Root wechseln. Eines Tages bedeutete ein Tippfehler, dass ich sudo su --
eintippte stattdessen – es scheint mir, dass alles dasselbe war wie mit einem einzelnen Bindestrich, außer dass ich mich im selben Ordner befand wie vor dem Absetzen des Befehls (mit einem einzelnen Bindestrich finde ich mich in /root
).
Gibt es weitere Unterschiede? Ist es sicher, dies in Szenarien zu verwenden, in denen ich weiß, dass ich im selben Verzeichnis arbeiten möchte?
Akzeptierte Antwort:
Wenn Sie einen doppelten Bindestrich angeben, ist die Erfahrung identisch, als ob Sie gerade sudo su
ausgeführt hätten ohne Bindestrich.
Das Übergeben eines einzelnen Bindestrichs ist identisch mit dem Übergeben von -l
oder --login
. Die Manpage für su
beschreibt das Verhalten als:
Stellen Sie eine Umgebung bereit, die dem entspricht, was der Benutzer erwarten würde, wenn sich der Benutzer direkt angemeldet hätte.
Dazu gehören das Festlegen Ihres Verzeichnisses auf Ihr Home-Verzeichnis und das Festlegen einer Reihe anderer Umgebungsvariablen.
Das Übergeben eines doppelten Bindestrichs an einen Befehl wird normalerweise verwendet, um das Ende von Befehlszeilen-Flags und den Beginn von Nicht-Flag-Argumenten zu markieren. Zum Beispiel, wenn Sie touch -R
ausführen Sie erhalten eine Fehlermeldung, die besagt, dass -R keine Option zum touch
ist , aber wenn Sie touch -- -R
ausführen es wird eine Datei namens -R
erstellt . Dies gilt für viele Befehlszeilentools (ls -R
wird ein rekursives ls
ausführen wohingegen ls -- -R
führt ein ls
aus in einer Datei oder einem Verzeichnis mit dem Namen -R
.
Also, um das Ganze abzuschließen, wenn Sie nur bestehen --
zu su
es ignoriert im Grunde den --
und so tun, als hätten Sie überhaupt keine Option bestanden.