Primeiro de tudo, não use sudo su
. Não é errado, perigoso ou qualquer coisa, é apenas deselegante e sem sentido . Você está executando dois programas separados para fazer um trabalho facilmente manipulado por um. Se você deseja iniciar um shell como root, sudo
pode fazer isso por você.
Se você deseja iniciar um shell de login (é isso que sudo su -
) faz, use sudo -i
. Porém, desde que ele inicia um shell de login, você será levado ao diretório inicial do root por padrão.
Para iniciar um shell regular, sem login, você pode usar sudo -s
. Isso iniciará um shell raiz para você e o manterá no diretório em que você o executou:
terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon
Portanto, a maneira de iniciar um shell raiz e permanecer no mesmo diretório é sudo -s
.
sudo -s
não execute o perfil do usuário de destino porque não é um shell de logon. Portanto, talvez a verdadeira questão seja se existe uma maneira de obter um shell de loginsudo
, mas sem alterar o diretório. Provavelmente não.