![sudoログインとプロンプト表示の違い](https://rvso.com/image/1555402/sudo%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A8%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E8%A1%A8%E7%A4%BA%E3%81%AE%E9%81%95%E3%81%84.png)
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 としてログインできるようにしてください。