(vermutlich, weil dadurch eine neue Bash-Instanz erstellt wird
Ja, bei praktisch allen Benutzerwechselmechanismen ( su
, sudo -s
usw.) ist es dasselbe, aber Ihre Variante macht deutlich, dass ein neuer bash
Prozess ausgeführt wird.
Der Rest der Befehle wird entweder ignoriert oder in der neuen Instanz ausgeführt und dann beendet.
Nein, die übergeordnete Shell wartet einfach auf sudo
das Beenden der neuen Bash-Instanz. (Wie bei jedem anderen Befehl.)
- Die Main-Shell wird ausgeführt
sudo bash
und wartet, bis sie beendet wird.- Sudo läuft
bash
und wartet, bis es beendet wird.- bash gibt Ihnen eine interaktive Eingabeaufforderung, in der Sie Ihre Root-Befehle ausführen.
- Wenn Sie 'exit' eingeben, wird bash beendet.
- sudo beendet das Warten, räumt auf und geht auch aus.
- Sudo läuft
- Main Shell beendet das Warten, führt den nächsten Befehl aus, falls vorhanden.
Sie können jedoch jeder Shell mitteilen, dass sie Befehle nicht interaktiv ausführen soll, indem Sie ihre -c
Option verwenden, die eine einzige Befehlszeile akzeptiert: z bash -c "cd /etc && ls"
. (Dies wird im Hintergrund von ssh
oder verwendet su -c
.)
Um eine interaktive Shell zu erhalten, stellen Sie sicher, dass der letzte Befehl in diesem Unterbefehl einer ist, der eine interaktive Shell ausführt. (Das sind schon einige Bash-Instanzen, aber eigentlich kein Problem.)
sudo bash -c "cd /etc/foo && bash"