sudo -s
との違いは何ですかsudo -i
? 異なるシェルが提供される理由は何ですか? は、私をの-s
中に閉じ込めて を提供するようです。bash
-i
sh
MacOSX High Sierra 10.13 で、sudo -s
ターミナルに入力してパスワードを入力すると、ユーザー名として root が表示されますが、プロンプトにドル記号が表示されます。
user1@mymachine:~$ sudo -s
**root@mymachine:~$**
しかし、 と入力するとsudo -i
、次のようになります:
user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**
上記の例で私が root なのにハッシュ記号 # が表示されないのはなぜですかsudo -s
? 私は本当の root ではないのですか?
2 つの間で環境変数が異なるのですか?
答え1
まず理解しておく必要があるのは、 はsudo -s
と同等でありsudo -s root
、sudo -i
は と同等であるということですsudo -i root
。sudo からユーザーを省略すると、ユーザー root を対象としているものとみなされます。
sudo -s
sudo -i
ターゲットユーザーとしてログインしながら、ターゲット ユーザーとしてシェルを実行します。
を実行するたびにsudo -s
、シェルが実質的にルート ユーザー シェルに変更されますが、 を実行するたびに、sudo -i
現在のユーザーからログアウトしてルートとしてログインすることになります。シェルをルート ユーザー シェルに変更するたびに、ユーザーのエクスポート情報が保持されるため、この点は重要です。 を実行すると、sudo -i
ユーザーからログアウトしてルートとしてログインします。つまり、ルート ユーザーのシェル構成を採用することになります。
これは関係ありませんが、誤って何かを壊してしまう可能性があるため、ユーザーを root に変更することは避けてください。面倒でも、エスカレーションが必要なすべてのコマンドを sudo するようにしてください。本当に root シェルに変更したい場合は、su
これを実行して root としてログインできるようにしてください。