it-swarm.com.de

Verhalten der Bash-Eingabeaufforderung ändern, wenn Sie als Root fungieren

Bevor Sie wegklicken, ist dies nicht die typische Frage "Wie mache ich meine Bash-Eingabeaufforderung farbig?". Ich habe meine Bash-Eingabeaufforderung bereits so angepasst:

[user @ Host]----[$(pwd)]
$ 

dabei ist alles in Klammern hellblau und alles andere (einschließlich $) schwarz, indem Sie Folgendes zu meiner ~/.bashrc-Datei hinzufügen

# Turn the Prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the Prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi

Das Ziel ist, es so zu machen, dass sich das einzige, was sich ändert, wenn ich 'Sudo su' benutze, ist, dass sich das schwarze $ in ein rotes # verwandelt. Ich habe in /etc/bash.bashrc und/etc/profile nachgesehen, um zu sehen, ob es nur eine Zeile zum Auskommentieren gibt, aber es gibt eine Menge Dinge über debian_chroot, die ich nicht verstehe und die ich nicht will etwas vermasseln. Wie kann ich erreichen, was ich will?

P.S. So soll die Eingabeaufforderung als root aussehen

[user @ Host]----[$(pwd)]
(red)#

edit: Markiere dies als gelöst und füge den obigen Code an ~/.bashrc an, während root mein Ziel erreicht hat. Außerdem zeigt $ (pwd) im obigen Code nur das Home-Verzeichnis an (vermutlich, weil dies das Arbeitsverzeichnis ist, wenn das Terminal geöffnet wird) und aktualisiert es nie. Das Ersetzen von $ (pwd) durch\w behebt das Problem, zeigt das Ausgangsverzeichnis jedoch als ~ an, was ich vermeiden wollte.

14
zmitchell

Dies hängt auch davon ab, wie Sie der Root-Benutzer werden. Sie müssen die Änderung in der .bashrc des Root-Benutzers vornehmen, wenn Sie etwas wie su - root oder Sudo -i verwenden, in dem Sie die Umgebung lesen.

Mit Sudo -s sollten Sie Ihre eigene .bashrc-Datei lesen.

Erwägen Sie, einige printf- oder echo-Anweisungen hinzuzufügen, um Ihren Code zu debuggen und Ihnen mitzuteilen, wann er ausgeführt wurde.

Verwenden Sie den Befehl id, um sicherzustellen, dass Sie der sind, von dem Sie glauben, dass Sie sind:

[email protected]:~# id
uid=0(root) gid=0(root) groups=0(root)
11
belacqua

Um die Farbe der Eingabeaufforderung für root in rot zu ändern, habe ich die Datei .bashrc entsprechend den Beispielen in diesem Thread geändert.

[email protected]:~$ Sudo su - 
[email protected]:~# vim .bashrc

Suchen Sie dann in vim nach der endgültigen Darstellung der PS1 - Zuweisung und fügen Sie diese hinzu (beachten Sie, dass der Wert von $PS1 aktualisiert wird, sodass andere vorherige Zeilen nicht geändert werden müssen Änderung ist leicht rückgängig zu machen):

# Set RED Prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"
3
CJBS

Nach der gültigen Antwort von belacqua https://askubuntu.com/a/305053/12218 wird durch die Ausgabe von sudo su die .bashrc-Datei des Stammverzeichnisses geladen.

Sie können dies überprüfen, indem Sie Sudo su gefolgt von cd ~ eingeben. Sie werden feststellen, dass Sie sich im Stammverzeichnis befinden.

Mit Sudo su melden Sie sich im Gegensatz zu als root (su = switch user) an
Sudo do some administrative task als Benutzer mit erhöhten Rechten.

Wenn Sie also Sudo su verwenden, werden Sie zum eigentlichen Root, und die an der Umgebung vorgenommenen Änderungen sind Änderungen, die speziell an Root vorgenommen wurden, d. H .: Sudo su, gefolgt von vim .bashrc.

2
Stef K

Folgendes kann helfen

export PS1='`[ $(id -u) == "0" ] && echo "#" || echo ">"` '

Dies zeigt '> ' für normale Benutzer und '# ' für root. Dies muss auch noch im .bashrc von root sein.

0
Petr Gladkikh