Bash

root時的紅色終端字型

  • November 8, 2019

我想在 RHEL/CentOS 7.6 中實現

每當您這樣做su並成為根使用者時,我希望該終端中的終端提示顏色在該su會話期間變為紅色。鍵入exit以恢復原來的身份,我希望提示顏色恢復為以前的顏色(黑色)。

對於使用 putty 通過網路登錄的 SSH 視窗也是如此:最初以使用者身份 ssh並具有預設的白色 shell 提示符;對suroot 進行操作,我希望提示變為紅色;鍵入 exit 我希望提示返回白色。

到目前為止,我這樣做了,但它沒有 100% 工作,在您鍵入exit並離開 su 會話並返回為user後顏色保持紅色。

/etc/profile.d/red_root_prompt.sh

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

有沒有辦法讓事情按照我想要的方式發生?我只希望它用於 bash shell。

您可以將其添加到/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\]以便您可以看到命令文本。我將其作為第二個範例供參考。

視覺外觀

另外,如果您將以下內容添加到\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

輸出如下所示:

在此處輸入圖像描述


編輯:由於某種原因,使用變數擴展作為提示符會破壞輸入(它將它鎖定到變數的長度,即將它向前推進 n 個對應於echo $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

引用自:https://unix.stackexchange.com/questions/551017