首页 > 解决方案 > 根据上一个命令的退出状态更改 PS1v 提示的最后一个字符的颜色

问题描述

我已经自定义了我的 .bashrc 设置,类似于 Clear Linux 中默认的 PS1 设置。我的文件内容如下:

EXIT="$?"
BLUE="\[\e[38;5;39m\]"
RED="\[\e[31m\]"
ORANGE="\[\e[38;5;208m\]"
WHITE="\[\e[0m\]"
    if [ "$EXIT" = "0" ]; then
          endchar="${BLUE}\\$""$WHITE"
    else
          endchar="${RED}\\$""$WHITE"
    fi
    
    if [ "$UID" = "0" ]; then
          username="${RED}\u${WHITE}"
    else
          username="${BLUE}\u${WHITE}"
    fi  

host="${ORANGE}\H${WHITE}"
dir="${BLUE}\w${WHITE}"
PS1="${username}@${host} ${dir} ${endchar} "

该文件的来源在登录或打开新终端窗口时没有错误,但有一个例外:结果 PS1 字符串中的最后一个字符永远保持蓝色,尽管我在终端上输入错误。

我的设置的预期行为是,当上一个命令的退出状态大于 0 时,提示符的最后一个字符 $ 变为红色。

有什么建议么?提前致谢

标签: bashpromptps1

解决方案


将此颜色代码添加到末尾

DEF='\e[0m' #Default color and effects
PS1="${username}@${host} ${dir} ${endchar}$DEF "

看看这里


推荐阅读