問題はこれである:
.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 su
。su
すでに使用してルートなので、これは意味がありませんsudo
。
代わりに使用してくださいsudo -Es
。これにより環境が保護されます。しかし、問題があります。シェルはインタラクティブで起動されるため、ソースにアクセスして~/.bashrc
リセットできます$PS1
。しかし、$HOME
それは保存されますので、bashは.bashrc
ルートのホームディレクトリではなくを見つけるときにホームディレクトリを使用します。したがって、お客様の個人データが使用されます。
しかし、ここでは問題が発生する可能性があります。前述のように$HOME
ユーザーのホームディレクトリを設定すると、そこにファイルを生成するすべてのコマンドが$HOME/
ルートとして生成されます。しかし、ファイルが既に存在して上書きするだけで構いません。
本当に保存したい場合は$PS1
これを行うことができますが、それほどきれいではありません。
sudo -E bash --norc
または
sudo PS1="$PS1" bash --norc
主な欠点は、この方法が明示的にbash
シェルとして使用され、--norc
bash固有のオプションでもあることです。上記の方法は、設定されていない場合は何でもsudo -Es
使用します。また、この方法を使用するときはエクスポートされていることを確認する必要があります。$SHELL
bash
-E
$PS1