スーパーユーザーモードでカスタムPS1を維持する方法は?

スーパーユーザーモードでカスタムPS1を維持する方法は?

問題はこれである:

.bashrcにカスタムが設定されていますが、PS1スーパーユーザーモードに入るとデフォルトに変わります。

私が期待したもの:

╓[coffee]─[Linux-Tower]─[2014-11-05, 23:41]─[~]
╙[$]-[sudo su
[sudo] password for coffee: 
╓[root]─[Linux-Tower]─[2014-11-05, 23:41]─[~]
╙[#]-[

私が得るもの:

╓[coffee]─[Linux-Tower]─[2014-11-05, 23:41]─[~]
╙[$]-[sudo su
[sudo] password for coffee: 
root@Linux-Tower:/home#

PS1それでは、rootとして実行するときに使用したいものをどのように設定しますか?

答え1

を使用しないでくださいsudo susuすでに使用してルートなので、これは意味がありませんsudo

代わりに使用してくださいsudo -Es。これにより環境が保護されます。しかし、問題があります。シェルはインタラクティブで起動されるため、ソースにアクセスして~/.bashrcリセットできます$PS1。しかし、$HOMEそれは保存されますので、bashは.bashrcルートのホームディレクトリではなくを見つけるときにホームディレクトリを使用します。したがって、お客様の個人データが使用されます。

しかし、ここでは問題が発生する可能性があります。前述のように$HOMEユーザーのホームディレクトリを設定すると、そこにファイルを生成するすべてのコマンドが$HOME/ルートとして生成されます。しかし、ファイルが既に存在して上書きするだけで構いません。

 

本当に保存したい場合は$PS1これを行うことができますが、それほどきれいではありません。

sudo -E bash --norc

または

sudo PS1="$PS1" bash --norc

主な欠点は、この方法が明示的にbashシェルとして使用され、--norcbash固有のオプションでもあることです。上記の方法は、設定されていない場合は何でもsudo -Es使用します。また、この方法を使用するときはエクスポートされていることを確認する必要があります。$SHELLbash
-E$PS1

関連情報