
Ich habe ein Skript in mein .bash_profile-Nicht-Root-Konto auf meiner CentOS-Linux-Maschine eingefügt, um meine PS1 nach sudo su zu ändern, aber da sudo su eigentlich eine neue Sitzung erstellt, wird das Skript natürlich gestoppt und meine PS1 bleibt gleich, obwohl mein .bash_profile sagt, dass ich sie ändern soll. Daran ist nichts falsch, aber gibt es eine Methode, um nach sudo su einen Befehl auszuführen (in meinem Fall, um meine PS1 zu ändern)? Ich habe versucht, das Skript auch in .bashrc einzufügen, und dasselbe.
Antwort1
Stapeln sudo
führt su
meiner Meinung nach zu einer Unordnung.
Der für mich zuverlässigste Weg, die richtige Umgebung für Root zu erstellen, einschließlich der Einstellung des richtigen Pfads und anderer Einstellungen aus den relevanten Dateien, /root/
istsudo -i
Bitte lesen Sie die Manualpagesman su
Undman sudo
weil es jede Menge Feinheiten gibt, wenn PATH und andere Sitzungs- und Umgebungsvariablen standardmäßig oder durch bestimmte Schalter geändert werden oder nicht.
Beachten Sie den Unterschied zwischen su -
und su
und beispielsweise die Tatsache, dass sudo normalerweise so konfiguriert ist, /etc/sudoers
dass bestimmte Umgebungsvariablen unterdrückt werden ...
Dieser Tisch(und der gesamte Artikel) zeigt einige der Unterschiede zwischen auf den ersten Blick ähnlichen Befehlen:
corrupted by user's
HOME=/root uses root's PATH env vars
sudo -i Y Y[2] N
sudo -s N Y[2] Y
sudo bash N Y[2] Y
sudo su Y N[1] Y
[1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
probably set by /etc/environment
[2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin