In meinem MacBook Air Terminal habe ich die folgende Eingabeaufforderung:
Zoos-MacBook-Air:~ zdm$
Wenn ich sudo su
mein Root-Passwort eintippe und dann eingebe, erhalte ich normalerweise dieselbe Eingabeaufforderung mit dem #
Zeichen wie folgt:
Zoos-MacBook-Air:~ zdm#
sudo su
Kürzlich ist mir aufgefallen, dass sich die Eingabeaufforderung zu geändert hat, als ich mein Root-Passwort eingegeben und dann eingegeben habe:
sh-3.2#
Wie ändere ich es wieder auf normal?
Ich weiß nicht, warum es sich geändert hat, aber Sie können sh-3.2#
andere Standard-Shell-Eingabeaufforderungen überschreiben, indem Sie die $PS1
Variable ändern. Führen Sie dazu einfach den folgenden Befehl aus (einschließlich des Leerzeichens nach dem Dollarzeichen):
export PS1='\h:\w \u\$ '
Dadurch wird Ihr Shell-Prompt durch ersetzt Zoos-MacBook-Air:~ root$
. Diese Änderung ist jedoch nicht dauerhaft und verschwindet, wenn Sie exit
oder das Terminal schließen. Sie können es dauerhaft machen, indem Sie die .bash_profile-Datei von root bearbeiten. Führen Sie den folgenden Befehl aus, während Sie sich in einer Root-Shell befinden, um diese Datei zu ändern:
echo 'export PS1='"'"'\h:\w \u\$ '"'" >> ~/.bash_profile
echo 'export PS1='"'"'\h:\w \u\$ '"'" >> ~/.profile
oder
echo "export PS1='\\h:\\w \\u\\\$ '" >> ~/.bash_profile
echo "export PS1='\\h:\\w \\u\\\$ '" >> ~/.profile
Dadurch wird die Änderung dauerhaft.
Tests wurden unter iOS 11 mit Root-Shell durchgeführt, aber alles in dieser Antwort funktioniert auch unter macOS.
root
's Shell ist sh
nicht bash
und sh
liest nicht .bash_profile
. Dies alles dreht sich darum, ob die Shell eine interaktive Login-Shell oder eine interaktive Nicht-Login-Shell ist und welche Konfigurationsdateien gelesen werden.bash
Handbuch. Achten Sie besonders auf den Absatz über sh
. When su
wird aufgerufen, da es eine with -Shell sudo su
erstellt , . liest keine Konfigurationsdateien, es sei denn, Sie legen eine Datei in der Umgebungsvariable fest. Jetzt wird es ein bisschen kompliziert, Variablen zu deklarieren und eine neue Konfigurationsdatei zu schreiben ... etc. Verwenden Sie einfach statt su` .
interactive non-login shell
root
sh
sh
ENV
sudo
sudo su -l
sudo su
Eingabeaufforderungen sh-3.2#
auch auf meinem Mac, im Gegensatz zu Linux-Kerneln.
Das sudo -i
bringt dich zum blah-blah-Air:~ root#
.
ls
Wenn Sie jedoch beide verwenden , werden Sie feststellen, dass die sh-3.2#
Listen viel mehr Verzeichnisse und Dateien enthalten als Ihre :~ root#
.
Probieren Sie sudo -s
oder sudo -i
wenn Sie möchten die :~ root#
.
Ich habe gehört, -s
soll "Umgebung beibehalten", -i
soll eine "neue Login-Shell" haben. Weitere Informationen zu sudo-Befehlen erhalten Sie, indem Sie man sudo
in Ihr Terminal eingeben.
fd0
zdm
Benutzer255044
Zoos-MacBook-Air:~ zdm#
da, wenn Sie sich in einer Root-Shell befinden, ist der Benutzername immer root.