私の考えではRHEL/CentOS 7.6で実装
これを行い、su
ルートになるたびに、そのセッション中にその端末の端末プロンプトの色が赤に変わりたいと思いますsu
。現在の状態に戻るにはEnterを押しexit
ます。プロンプトの色が前の色(黒)に戻ることを望みます。
ネットワーク経由でログインするためにパテを使用するSSHウィンドウと同じです。まず、次のようにSSHとしてログインします。ユーザーそしてデフォルトの白いシェルプロンプトがあります。su
ルート操作を実行するときにプロンプトが赤に変わり、終了時にプロンプトが白に戻ります。
これまでこれを行いましたが、100%は機能しません。exit
suセッションに入り、出て元の状態に戻っても、色は赤のままです。ユーザー。
/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
答え2
/etc/profile.d
RHEL / CentOS 7.xでは、このようなカスタムコンテンツが存在する必要があると思います/etc/bashrc.local
。これにより、同様のコンテンツが/etc/bashrc
変更または交換されたときに更新後もすべてのカスタマイズが維持されます。
/etc/profile.d/
RHEL / Centos 7の場合は、そのシェルの下に対応するサフィックスを持つファイルを配置するだけでよいと思います。
だから私/etc/profile.d/redrootprompt.sh
は
if [ "$LOGNAME" = root ] || [ "`id -u`" -eq 0 ] ; then
PS1='[\[\033[01;31m\]\u@\h\[\033[00m\]:\w] : '
else
PS1='[\u@\h \w] : '
fi
私が望んだ外観にぴったりです。
黒の背景と白いテキストを持つパテウィンドウでも機能しますが、ルートに訴えた後、赤に変わり、終了時に白に戻ります。