回答:
まず、を使用しないでくださいsudo su
。それはそれだけだ、間違っている、または危険か何かではない洗練さと無意味。2つの別々のプログラムを実行して、1つのプログラムで簡単に処理されるジョブを実行します。シェルをルートとして起動したい場合sudo
は、それを実行できます。
ログインシェルを起動する場合(それがsudo su -
)は、を使用しますsudo -i
。ただし、ログインシェルを起動するため、デフォルトではルートのホームディレクトリに移動します。
通常の非ログインシェルを開始するには、を使用できますsudo -s
。これにより、ルートシェルが起動し、実行元のディレクトリに保持されます。
terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon
したがって、ルートシェルを起動して同じディレクトリにとどまる方法はsudo -s
です。
これはとても簡単です。入力するだけ
sudo su
の代わりに
sudo su - root
これにより、ルートと同じフォルダに保持されます。
sudo su
してもあまり意味がありません。それsudo -s
が目的です。なぜ多くのUbuntuチュートリアルが推奨するのか、私には理解できませんsudo su
。
su
(単独で、no sudo
)にします。ただし、Ubuntuはデフォルトでrootアカウントを無効にするため、これはsudo su
ごく自然に行われました。それは、明らかに、UNIXの世界のいくつかのコーナーでも同様ですが、Linuxでは、Ubuntuでしか見たことがありません。
sudo -s
ログインシェルではないため、ターゲットユーザーのプロファイルが実行されない可能性があります。したがって、おそらく本当の問題はsudo
、ディレクトリを変更せずに、でログインシェルを取得する方法があるかどうかです。おそらく違います。