回答:
まず、を使用しないでください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、ディレクトリを変更せずに、でログインシェルを取得する方法があるかどうかです。おそらく違います。