In letzter Zeit wurde eine Frage zu mehreren Sysadmins gestellt, die als Root fungieren. Auf diese Fragesudo bash -l
wurde verwiesen.
Ich habe auf Google und SE danach gesucht, aber ich verstehe den Unterschied zwischen sudo bash -l
und nicht sudo -i
.
Aus den Manpages für bash und sudo geht hervor, dass der Unterschied möglicherweise darin besteht, dass sudo bash -l
~ / .bash_profile, ~ / .bash_login und ~ / .profile und ~ / .bash_logout des Root-Benutzers ausgeführt werden Es wird die .bashrc-Datei des normalen Benutzers ausgeführt und nicht die Root-Datei. Möglicherweise habe ich falsch verstanden, auf welchen Benutzer der Ausdruck ~ in den Manpages verweist. Eine Klärung der Unterschiede und Nutzungsszenarien ist erwünscht.
Um auch zu @ johnshen64 eine Antwort hinzuzufügen, habe ich festgestellt, dass der
sudo -i
Aufruf die$USERNAME
env-Variable fürroot
undcd ~
an den Benutzer home auf diese Weise aktualisiert .For
sudo bash -l
$USERNAME
ist jedoch nicht belästigt und das Arbeitsverzeichnis wird nicht geändert. (obwohl dies für andere Benutzer nicht konsistent ist, siehe Kommentare ...)Vermutlich erhalten Sie also nicht genau den gleichen Satz
~/.bashrc
oder nicht die gleiche Reihenfolge usw.(Meine Box könnte durch meine
.bashrc
Basteleien ein wenig durcheinander gebracht worden sein , also YMMV)quelle
echo $USERNAME
gibt für mich beide Male root zurück (auf meinem Ubuntu-Desktop und Centos 5.2). PWD ist wie Sie jedoch berichten.