What's the difference between "sudo su -" and "sudo -i"?

5,580

Both sudo -i and sudo su - will get you an interactive login shell. The difference you are seeing is because of the way that sudo is configured to handle environment variables and in this case PS1. Your PS1 is different from root's PS1. If you look in /etc/sudoers you will probably find an env_keep line that contains PS1.

Defaults    env_keep += "MAIL PS1 PS2 QTDIR ..."

This instructs sudo to keep (amongst others) the PS1 environment variable in the environment of the commands you are running so this is what you see (different prompts).

When you run sudo su - the modified environment is passed to su which then runs a login shell, su doesn't force the environment to be the same so it gets set up with whatever is in root's initialisation files.

Share:
5,580

Related videos on Youtube

nomike
Author by

nomike

Updated on September 18, 2022

Comments

  • nomike
    nomike over 1 year

    Possible Duplicate:
    What is the difference between sudo -i and sudo su -

    I know both commands result in gaining a root-shell. But there are some differences. On some servers e.g. the prompt is different:

    nomike@testerver:~> sudo -i
    root@testerver:~> logout
    nomike@testerver:~> sudo su -
    [root@testerver ~]# 
    

    So I guess the handling of ".bashrc" ".bash_profile" and ".profile" is somehow different.

    Does one invoke a login shell and the other not?