Il y a une question récente concernant plusieurs administrateurs système fonctionnant en tant que root, et a sudo bash -l
été référencée.
J'ai cherché cela sur google et SE, mais je ne comprends pas la différence entre sudo bash -l
et sudo -i
.
D'après les pages de manuel de bash et sudo, il semble que la différence peut être que sudo bash -l
s'exécute ~ / .bash_profile, ~ / .bash_login, ~ / .profile et ~ / .bash_logout de l'utilisateur root, mais d'après mes propres tests, cela ressemble à il exécute le .bashrc de l'utilisateur normal et non le root. J'ai peut-être mal compris à quel utilisateur l'expression ~ fait référence dans les pages de manuel. Une clarification de la différence et des scénarios d'utilisation serait appréciée.
Aussi pour ajouter à la réponse @ johnshen64, j'ai remarqué que l'
sudo -i
invocation met à jour la$USERNAME
variable env versroot
etcd ~
vers la maison de l'utilisateur comme ça;Cependant, for
sudo bash -l
$USERNAME
n'est pas modifié et le répertoire de travail n'est pas modifié. (bien que cela ne soit pas cohérent entre les autres utilisateurs, voir les commentaires ...)Donc, sans doute, vous n'obtenez pas exactement le même ensemble de
~/.bashrc
, ou pas dans le même ordre, etc.(ma boîte a peut-être été un peu
.bashrc
gâchée par mes bricolages, donc YMMV)la source
echo $USERNAME
retourne root les deux fois pour moi (sur mon bureau ubuntu et centos 5.2). PWD est cependant comme vous le signalez.