There is a recent question regarding multiple sysadmins working as root, and sudo bash -l
was referenced.
I searched for this on google and SE, but I don't understand the difference between sudo bash -l
and sudo -i
.
From the man pages for bash and sudo it seems that the difference may be that sudo bash -l
runs ~/.bash_profile, ~/.bash_login, and ~/.profile, and ~/.bash_logout of the root user, but from testing myself it looks like it runs the normal user's .bashrc and not the root one. I may have misunderstood which user the ~ expression is referencing in the man pages.
Clarification of the difference and usage scenarios would be appreciated.
They differ in that if the root user login shell specified in /etc/passwd is not bash, then the second command will get you a bash shell as root while the first command will use whatever the interactive shell the root user has.
Also to add to @johnshen64 answer I noticed that the
sudo -i
invocation updates the$USERNAME
env variable toroot
andcd ~
to the user home like so;However for
sudo bash -l
$USERNAME
is unmolested, and the working directory is not changed. (though this is not consistent across other users, see comments...)So presumably you are not getting exactly the same set of
~/.bashrc
, or not in the same order etc.(my box might have been messed up a little by my
.bashrc
tinkerings, so YMMV)