Warum verwendet mein MacBook Air-Terminal sh-3.2# anstelle meines Benutzernamens#?

In meinem MacBook Air Terminal habe ich die folgende Eingabeaufforderung:

Zoos-MacBook-Air:~ zdm$

Wenn ich sudo sumein Root-Passwort eintippe und dann eingebe, erhalte ich normalerweise dieselbe Eingabeaufforderung mit dem #Zeichen wie folgt:

Zoos-MacBook-Air:~ zdm#

sudo suKü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?

Hast du das Root-Benutzerkonto aktiviert? Oder hatten Sie das Root-Benutzerkonto aktiviert und haben jetzt das Root-Benutzerkonto deaktiviert?
Ich glaube, es wurde nie aktiviert.
Ihr Root-Shell-Prompt war wahrscheinlich nicht Zoos-MacBook-Air:~ zdm#da, wenn Sie sich in einer Root-Shell befinden, ist der Benutzername immer root.

Antworten (2)

Ich weiß nicht, warum es sich geändert hat, aber Sie können sh-3.2#andere Standard-Shell-Eingabeaufforderungen überschreiben, indem Sie die $PS1Variable ä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 exitoder 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 shnicht bashund shliest 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.
@fd0 Ich habe die Antwort so bearbeitet, dass sie .profile enthält
Einer richtigen Antwort etwas näher. Ich schlage vor, Sie lesen den Abschnitt INVOCATION im bashHandbuch. Achten Sie besonders auf den Absatz über sh. When suwird aufgerufen, da es eine with -Shell sudo suerstellt , . 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 shellrootshshENVsudo sudo su -l

sudo suEingabeaufforderungen sh-3.2#auch auf meinem Mac, im Gegensatz zu Linux-Kerneln.
Das sudo -ibringt dich zum blah-blah-Air:~ root#.

lsWenn 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 -soder sudo -iwenn Sie möchten die :~ root#.

Ich habe gehört, -ssoll "Umgebung beibehalten", -isoll eine "neue Login-Shell" haben. Weitere Informationen zu sudo-Befehlen erhalten Sie, indem Sie man sudoin Ihr Terminal eingeben.

Die Manpage erklärt die verschiedenen Optionen für sudo, es ist normalerweise die bessere Referenz als Hörensagen :-)
Ich habe gehört, dass ich bereits auf die Manpage verwiesen habe ....