web-dev-qa-db-ja.com

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

クリックして離れる前に、これは典型的な「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についてはわからないことがたくさんあります。何かを台無しにするために。どうすれば目的を達成できますか?

追伸これは、プロンプトをルートとして表示したいものです

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

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

14
zmitchell

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

Sudo -sを使用すると、独自の.bashrcを読む必要があります。

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

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

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

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

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

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

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

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

これを確認するには、Sudo suに続いてcd ~を発行します。これにより、ルートのホームディレクトリにいることがわかります。

Sudo suを使用すると、rootとしてログインします(su =ユーザーの切り替え)
Sudo do some administrative task昇格された特権を持つユーザーとして。

したがって、Sudo suを使用すると、実際のルートになり、環境に加えられた変更は、具体的にルートに加えられた変更になります。つまり、Sudo suに続いてvim .bashrcになります。

2
Stef K

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

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

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

0
Petr Gladkikh