A principal diferença entre sudo -i
e sudo -s
é:
-
sudo -i
fornece o ambiente raiz, ou seja, seu~/.bashrc
é ignorado. -
sudo -s
oferece 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
.