Há uma pergunta recente sobre vários administradores de sistema que trabalham como raiz e sudo bash -l
foi referenciada.
Eu procurei por isso no google e no SE, mas não entendo a diferença entre sudo bash -l
e sudo -i
.
Nas páginas do manual para bash e sudo, parece que a diferença pode ser que sudo bash -l
execute ~ / .bash_profile, ~ / .bash_login e ~ / .profile e ~ / .bash_logout do usuário root, mas, ao me testar, parece ele executa o .bashrc do usuário normal e não o root. Talvez eu tenha entendido mal qual usuário a expressão ~ está fazendo referência nas páginas de manual. O esclarecimento dos cenários de diferença e uso seria apreciado.
Também para adicionar à resposta @ johnshen64, notei que a
sudo -i
invocação atualiza a$USERNAME
variável env pararoot
ecd ~
para a página inicial do usuário;No entanto, para
sudo bash -l
$USERNAME
não é molestado e o diretório de trabalho não é alterado. (embora isso não seja consistente com outros usuários, consulte os comentários ...)Então, presumivelmente, você não está recebendo exatamente o mesmo conjunto
~/.bashrc
ou na mesma ordem, etc.(minha caixa pode ter sido um pouco bagunçada pelos meus
.bashrc
ajustes, então YMMV)fonte
echo $USERNAME
retorna o root duas vezes para mim (no meu desktop ubuntu e no centos 5.2). PWD é como você relata.