ルートとして機能する場合のbashプロンプトの動作の変更


16

クリックする前に、これは典型的な「bashプロンプトに色を付けるにはどうすればよいか」という質問ではありません。私はすでにbashプロンプトを次のようにカスタマイズしています:

[user @ host]----[$(pwd)]
$ 

〜/ .bashrcファイルに以下を追加することで、括弧内のすべてが水色で、他のすべて($を含む)が黒になります

# Turn the prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi

目標は、「sudo su」を使用したときに変更される唯一のものが、黒の$が赤の#に変更されるようにすることです。/etc/bash.bashrcと/ etc / profileを調べてコメントアウトする行があるかどうかを確認しましたが、debian_chrootについてはわからないことがたくさんあります。何かを台無しにするために。どうすれば自分のやりたいことを達成できますか?

PSこれは、プロンプトをルートとして表示するものです

[user @ host]----[$(pwd)]
(red)#

編集:これを解決済みとしてマークし、ルートが私の目標を達成している間に上記のコードを〜/ .bashrcに追加します。また、上記のコードでは、$(pwd)はホームディレクトリのみを表示し(ターミナルを開いたときは作業ディレクトリであるためだと思います)、更新することはありません。$(pwd)を\ wに置き換えるとこれが修正されますが、ホームディレクトリはとして表示されますが~、これは回避しようとしました。


$ pwdまたは$ PWDを使用していますか?
ベラク

印刷不可能な文字を使用していることをbashに伝えなかったため、行を正しく折り返すことができません。以下のような非印字可能な文字を、囲み\e[01;31mで、\[...\]。これは、マニュアルの「プロンプト」で説明されています。mywiki.wooledge.org/BashFAQ/053
geirha

pwdプロンプトで動作しなかった理由は、ドル記号をエスケープする必要があるためです。そうしない$(pwd)と、コンテンツが$ PS1に配置されるに実行されます。これでテストできます: PS1="\$(pwd) "
F-3000

回答:


12

また、rootユーザーになる方法にも依存します。su - rootまたはのようなsudo -i環境を使用している場合は、rootユーザーの.bashrcを変更する必要があります。

ではsudo -s、独自の.bashrcを読む必要があります。

コードをデバッグするためにprintfまたはechoステートメントをいくつか追加して、コードが実行されたことを知らせてください。

次のidコマンドを使用して、自分が自分だと思う人であることを確認します。

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)

私が使用しているsudo su
zmitchell

1
sudo su〜root / .bashrcを読み取ります(少なくとも私の13.04システムで現在実装されているように)。
ベラク

3

ルートのプロンプトの色を赤に変更するために.bashrc、このスレッドの例に従ってファイルを変更しました。

regularuser@myubuntubox:~$ sudo su - 
root@myubuntubox:~# vim .bashrc

次に、vimで、PS1割り当ての最終的な外観を検索し、それに続いてこれを追加します($PS1他の前の行を変更する必要がないように値を更新し、変更は簡単に元に戻せることに注意してください):

# Set RED prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"

2

belacquaの有効な回答/ubuntu//a/305053/12218に従って、sudo suを発行することにより、ルートの.bashrcがロードされます。

あなたは発行して、これを確認することができますsudo suが続くcd ~あなたがrootのホームディレクトリであることがわかります。

使用してsudo suあなたとは逆に、rootとして(SU =スイッチユーザー)でログイン
sudo do some administrative task昇格した権限を持つユーザーとして。

したがって、使用sudo suすると、実際のルートになり、環境に加えられた変更は、特にルートに加えられた変更、つまり:にsudo su続きvim .bashrcます。


0

以下が役立つ場合があります

export PS1='`[ $(id -u) == "0" ] && echo "#" || echo ">"` '

これは'> '、通常のユーザーおよび'# 'ルートに対して表示されます。これもまだルートにある必要があり.bashrcます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.