ルートのときに赤いターミナルフォント

ルートのときに赤いターミナルフォント

私の考えではRHEL/CentOS 7.6で実装

これを行い、suルートになるたびに、そのセッション中にその端末の端末プロンプトの色が赤に変わりたいと思いますsu。現在の状態に戻るにはEnterを押しexitます。プロンプトの色が前の色(黒)に戻ることを望みます。

ネットワーク経由でログインするためにパテを使用するSSHウィンドウと同じです。まず、次のようにSSHとしてログインします。ユーザーそしてデフォルトの白いシェルプロンプトがあります。suルート操作を実行するときにプロンプ​​トが赤に変わり、終了時にプロンプ​​トが白に戻ります。

これまでこれを行いましたが、100%は機能しません。exitsuセッションに入り、出て元の状態に戻っても、色は赤のままです。ユーザー

/etc/profile.d/red_root_prompt.sh

if [ $UID -eq 0 ]; then
   PS1="\e[31m[\u@\h \W]# "
else
   PS1="[\u@\h \W]# "

私が望むように仕事をするようにする方法はありますか?私はbashシェルだけが欲しい。

ベストアンサー1

追加または/etc/bash.bashrc編集できます。/etc/profile/

force_color_prompt=yes

    if [ "$LOGNAME" = root ] || [ "`id -u`" -eq 0 ] ; then
        PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;34m\]#\033[00m\] '
    else
        PS1='\u@\h:\w\$ '
    fi

同様のプロンプトが表示されます。白い背景を使用している場合は、最後の部分をコマンドテキストが表示されるように#変更してください。\033[01;30m\]参考のために2番目の例として含めます。

視覚的な外観

\etc\bash.bashrcまた、 ~/.bashrc に以下を追加すると:

export col_white='\033[00m'
export col_black='\033[01;30m'

export col_red='\033[01;31m'
export col_green='\033[01;32m'
export col_yel='\033[01;33m'
export col_blue='\033[01;34m'

次の操作を実行できます。

$ echo -e $col_red red $col_blue blue $col_yel yellow $col_green green
 red blue yellow green

出力は次のとおりです。

ここに画像の説明を入力してください。


編集する:何らかの理由で変数拡張をプロンプトとして使用すると、キャリッジリターンが中断されます(変数の長さに固定されます。つまり、に対応するnecho $col_blueスペースを前方に押しますecho $col_white。これまでこの時点で良い解決策が見つかりませんでしたが、の変数置換を使用せずに適切な角かっこを使用すると、この問題を解決できます。

if [ "$LOGNAME" = root ] || [ "`id -u`" -eq 0 ] ; then
    PS1="$col_red\u@\h:$col_purple\w$col_green# $col_white"
else
    PS1="\u@\h:$col_blue\w$col_yel\$ $col_white "
fi

おすすめ記事