Rootとして機能する複数のシステム管理者に関して 最近の質問 があり、Sudo bash -l
が参照されました。
グーグルとSEで検索したのですが、Sudo bash -l
とSudo -i
の違いがわかりません。
BashとSudoのマニュアルページから、Sudo bash -l
がrootユーザーの〜/ .bash_profile、〜/ .bash_login、〜/ .profile、および〜/ .bash_logoutを実行するという違いがあるようですが、自分でテストすると、ルートユーザーではなく通常のユーザーの.bashrcが実行されているように見えます。 〜式がマニュアルページで参照しているユーザーを誤解している可能性があります。違いと使用シナリオを明確にしていただければ幸いです。
/ etc/passwdで指定されたrootユーザーのログインシェルがbashでない場合、2番目のコマンドはbashシェルをrootとして取得し、最初のコマンドはrootユーザーが持っているインタラクティブシェルを使用するという点で異なります。
また、@ johnshen64の回答に追加するために、Sudo -i
呼び出しが$USERNAME
env変数をroot
に更新し、cd ~
をユーザーホームに次のように更新することに気付きました。
$ Sudo -i
[root@workstation001 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 ~]# echo $USERNAME
root
[root@workstation001 userXXX]# echo $PWD
/root
ただし、Sudo bash -l
$USERNAME
は無秩序であり、作業ディレクトリは変更されません。 (これは他のユーザー間で一貫していませんが、コメントを参照してください...)
$ Sudo bash -l
[root@workstation001 userXXX]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 userXXX]# echo $USERNAME
userXXX
[root@workstation001 userXXX]# echo $PWD
/home/userXXX
したがって、おそらく、~/.bashrc
のセットがまったく同じではないか、同じ順序ではないなどです。
(私の箱は私の.bashrc
のいじくり回しによって少し台無しにされたかもしれないので、YMMV)