EDITADO. Nota: Esta resposta foi strongmente editada desde a sua última iteração com base nos comentários de Eliah Kagan.
sudo -i
executa um shell de login com privilégios de root, simulando um login inicial com root, agindo de forma semelhante a su -
. A principal diferença entre sudo -i
e su -
é que sudo -i
pode ser executado usando a senha de um sudo, enquanto su -
deve ser executado com a senha da conta raiz. Portanto, se você estiver em uma instalação padrão do * buntu, em que o login da raiz está desabilitado, sudo -i
pode ser usado enquanto su
e suas variantes não podem.
Se você executar os seguintes comandos:
$ sudo -i
[sudo] password for <username>: <enter user's password>
# cd ~
# pwd
você receberá a saída:
/root
Assim, você pode ver que sudo -i
simula um login raiz inicial, incluindo a alteração da pasta pessoal ( $HOME
) para raiz, em vez da sua própria. Isso também significa que sudo -i
lê arquivos de login como .profile
.
Enquanto isso, sudo -s
inicia um novo shell, mas sem simular login inicial - os arquivos de login não são lidos e $HOME
ainda está definido para a pasta inicial do usuário .
Se você executar os seguintes comandos:
$ sudo -s
[sudo] password for <username>: <enter user's password>
# cd ~
# pwd
você receberá a saída:
/home/<username>
A partir disso, você pode ver que sudo -s
não não simula um login inicial e não altera $HOME
.