Pojawiło się ostatnie pytanie dotyczące wielu sysadminów pracujących jako root i sudo bash -l
zostało przywołane.
Szukałem tego w Google i SE, ale nie rozumiem różnicy między sudo bash -l
i sudo -i
.
Ze stron podręcznika dla bash i sudo wydaje się, że różnica może być taka, że sudo bash -l
uruchamia ~ / .bash_profile, ~ / .bash_login i ~ / .profile oraz ~ / .bash_logout użytkownika root, ale po przetestowaniu siebie wygląda na to, że uruchamia .bashrc zwykłego użytkownika, a nie root. Być może źle zrozumiałem, do którego użytkownika odnosi się wyrażenie ~ na stronach podręcznika man. Docenione zostanie wyjaśnienie scenariuszy różnic i użytkowania.
Również, aby dodać do odpowiedzi @ johnshen64, zauważyłem, że
sudo -i
wywołanie aktualizuje$USERNAME
zmienną env doroot
icd ~
do domu użytkownika w ten sposób;Jednak for
sudo bash -l
$USERNAME
jest niezbadany, a katalog roboczy nie jest zmieniany. (chociaż nie jest to spójne dla innych użytkowników, zobacz komentarze ...)Więc prawdopodobnie nie otrzymujesz dokładnie tego samego zestawu
~/.bashrc
lub nie w tej samej kolejności itp.(moje pudełko mogło zostać trochę pomieszane przez moje
.bashrc
majsterkowanie, więc YMMV)źródło
echo $USERNAME
Zwraca root dla mnie dwa razy (na moim pulpicie Ubuntu i Centos 5.2). PWD jest jednak zgodne z raportem.