Answers:
它们的区别在于,如果/ etc / passwd中指定的root用户登录shell不是bash,则第二个命令将为您提供bash shell作为root,而第一个命令将使用root用户拥有的任何交互式shell。
也添加到@ johnshen64回答我注意到sudo -i
调用更新$USERNAME
环境变量来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
但是for 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
修修补补可能会使我的盒子有些混乱,所以YMMV)
echo $USERNAME
我两次都返回了root(在我的ubuntu桌面和centos 5.2上)。PWD是您所报告的。