A principal diferença entre sudo -i e sudo -s é:
-
sudo -ifornece o ambiente raiz, ou seja, seu~/.bashrcé ignorado. -
sudo -soferece o ambiente do usuário, portanto, seu~/.bashrcé respeitado.
Aqui está um exemplo, você pode ver que eu tenho um aplicativo lsl no meu diretório ~/.bin/ , que é acessível via sudo -s , mas não acessível com sudo -i . Note também que o prompt do Bash muda como será com sudo -i , mas não com sudo -s :
dotancohen@melancholy:~$ ls .bin
lsl
dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl
dotancohen@melancholy:~$ sudo -i
root@melancholy:~# which lsl
root@melancholy:~# exit
logout
dotancohen@melancholy:~$ sudo -s
Sourced .bashrc
dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl
dotancohen@melancholy:~$ exit
exit
Embora sudo -s seja conveniente para oferecer o ambiente com o qual você está familiarizado, recomendo o uso de sudo -i por dois motivos:
- O lembrete visual de que você está em uma sessão 'raiz'.
- É muito menos provável que o ambiente raiz seja envenenado com malware, como uma linha não autorizada em
.bashrc.