Bash
root時的紅色終端字型
我想在 RHEL/CentOS 7.6 中實現
每當您這樣做
su
並成為根使用者時,我希望該終端中的終端提示顏色在該su
會話期間變為紅色。鍵入exit
以恢復原來的身份,我希望提示顏色恢復為以前的顏色(黑色)。對於使用 putty 通過網路登錄的 SSH 視窗也是如此:最初以使用者身份 ssh並具有預設的白色 shell 提示符;對
su
root 進行操作,我希望提示變為紅色;鍵入 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