Take the 2-minute tour ×

I’ve seen many comments here in Ask Ubuntu regarding preference in using sudo -s rather than sudo su.

For me, that two commands do exactly the same. But why is sudo -s supposed to be better?

share|improve this question
I think sudo -i or sudo su is better than sudo -s for reasons mentioned here: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Also: this is a possible duplicate of superuser.com/questions/29/… –  arrange Oct 4 '11 at 6:27
I think this question should be moved to unix.stackexchange.com –  igi Dec 25 '11 at 8:48

4 Answers 4

up vote 24 down vote accepted

I think sudo -s is not "better", it's just different.

sudo -s

keeps your $HOME directory, so when you start programs, they will use your (and not root's) config files etc. Disadvantage: they can also change the ownership of your files in the $HOME directory, typical example is the .Xauthority file, but I have never experienced a problem with that.

sudo su or sudo -i

programs will use the root's home directory and its config files. This might be more intuitive, but it also means that it will not use any configuration you may have set for yourself (aliases, bash history,...).

share|improve this answer
Okay, I now understand the difference. Thank you! –  Fitoschido Oct 4 '11 at 18:34
"sudo su" is not equivalent to "sudo -i". "sudo -i" is equivalent to "sudo su -" but "sudo su -" keeps the current working directory while "sudo -i" moves you into root's home –  Gregory Pakosz Feb 22 '12 at 21:50

Because sudo -s will not change your environment variables, especially $HOME, which will stay HOME=/home/USER. If you use sudo su this will change to HOME=/root which can have negative side effects when programs you start try to access your user's home directory.

So basically it's like sudo vs gksudo when running graphical programs.

share|improve this answer
Thank you for the clarification, much appreciated! –  Fitoschido Oct 4 '11 at 18:34

Aside from the already mentioned differences with environment variables, I find sudo su silly and wasteful because you are asking sudo to run su as root, and ask it to run a shell as root. Why ask a program to ask a program to give you a root shell, when you can just have the first program give you that shell? Does that matter in any practical sense? No, I'm just pedantic.

share|improve this answer
You’re right, it’s somewhat redundant. –  Fitoschido Oct 4 '11 at 18:31
Well, not completely so: if you are using sudo su to be root, yes, just go sudo -i, for example. But it does help when you want to become a different user: sudo su - myuser. –  hggdh Oct 4 '11 at 22:31
There is another difference: sudo -i will change to /root directory and sudo su will stay in the directory you are. –  laurent Oct 5 '11 at 0:05
@hggdh, sudo -u myuser. –  psusi Oct 5 '11 at 13:38

I would disagree with other answers when considering the cases when you want to log in as a user who do not have a shell. That is a very common case with users assigned to services.

Using "sudo su" will start the shell specified by the user. However in the case of a user assigned to server process, the shell is /usr/bin/false and the logging will fail. Instead you should enter as:

sudo -sHu <server-user>

that will log you in and cd to its home path, even if the user does not have a shell assigned

share|improve this answer

Your Answer


