Eсть недавний вопрос относительно нескольких системных администраторов, работающих как root, и sudo bash -l
был упомянут.
Я искал это в Google и SE, но не понимаю разницы между sudo bash -l
и sudo -i
.
Из страниц руководства для bash и sudo кажется, что разница может заключаться в том, что sudo bash -l
запускает ~ / .bash_profile, ~ / .bash_login, и ~ / .profile, и ~ / .bash_logout пользователя root, но, судя по собственному тестированию, похоже, что он запускает .bashrc обычного пользователя, а не root. Возможно, я неправильно понял, на кого из пользователей ссылается выражение ~ на страницах руководства. Приветствуется разъяснение различий и сценариев использования.
Они отличаются тем, что если оболочка входа пользователя root, указанная в / etc / passwd, не является bash, то вторая команда предоставит вам оболочку bash как root, а первая команда будет использовать любую интерактивную оболочку, которая есть у пользователя root.
Также, чтобы добавить к ответу @ johnshen64, я заметил, что sudo -i
вызов обновляет $USERNAME
переменная env для root
и cd ~
пользователю домой вот так;
$ sudo -i
[root@workstation001 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 ~]# echo $USERNAME
root
[root@workstation001 userXXX]# echo $PWD
/root
Однако для sudo bash -l
$USERNAME
не трогается, и рабочий каталог не изменяется. (хотя это не согласуется с другими пользователями, см. комментарии ...)
$ sudo bash -l
[root@workstation001 userXXX]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 userXXX]# echo $USERNAME
userXXX
[root@workstation001 userXXX]# echo $PWD
/home/userXXX
Предположительно, вы не получаете точно такой же набор ~/.bashrc
, или не в том же порядке и т. д.
(моя коробка могла быть немного испорчена моим .bashrc
возни, так ЫММВ)