
Ich verwende Ubuntu 10.04 und Bash. Ich möchte in den Root-Zugriff wechseln und meine Eingabeaufforderung in unterstrichene rote Zeichen ändern lassen, um anzuzeigen, dass ich Root bin. Wenn ich in der Bash-Eingabeaufforderung Folgendes eingebe:
$ sudo bash
dann gehe ich in den Root-Zugriff, aber meine Eingabeaufforderung ändert sich nicht. /root/.bashrc
Ich habe:
RED="\[\033[0;31m\]"
UNDERLINE="\[\033[4m\]"
DEFAULT="\[\033[0m\]"
export PS1=$RED$UNDERLINE'\u@\h:\w\$'$DEFAULT' '
Diese Datei wird jedoch nicht gelesen. Damit sie gelesen wird, muss ich in der Eingabeaufforderung Folgendes eingeben:
# . /root/.bashrc
was ich nicht tun möchte. Wie richte ich es ein, damit /root/.bashrc
es automatisch ausgeführt wird, wenn ich mich als Root anmelde?
Antwort1
Erstens: Ist das
sudo root
überhaupt ein gültiger Befehl? (sudo -s
Odersudo -i
wäre es einer.)Ich bevorzuge die Bearbeitung meinereigen
.bashrc
anstelle von root. Sie können zum Beispiel haben,if (( $UID == 0 )); then PS1="$RED$UNDERLINE" else PS1="$GREEN" fi PS1="$PS1\u@\h:\w\$$DEFAULT "
Sie können es verwenden
sudo -i
, um zu erreichen, dass die RC-Dateien von Root statt Ihren gelesen werden.
Antwort2
Scheint, als ob sudo so konfiguriert ist, dass die Umgebungsvariablen der ursprünglichen Benutzer und nicht die neuen verwendet werden.
Entweder Sie setzen die env_reset and env_keep options in /etc/sudoers
oder Sie setzen die Umgebungsvariablen explizit auf die des Zielbenutzers zurück mit -H
:
sudo -H -u root