我一直在尝试自定义我的 Bash 提示,使其看起来像
[feralin@localhost ~]$ _
与颜色。我设法获得了恒定的颜色(每次看到提示时颜色相同),但是如果最后一个命令的退出状态为非零,我希望用户名('feralin')显示为红色,而不是绿色。我想出了:
\e[1;33m[$(if [[ $? == 0 ]]; then echo "\e[0;31m"; else echo "\e[0;32m"; fi)\u\e[m@\e[1;34m\h \e[0;35m\W\e[1;33m]$ \e[m
但是,根据我的观察,$(if ...; fi)
似乎在.bashrc
运行时评估了一次,并且结果被永远替换。这使得名称始终为绿色,即使最后一个退出代码为非零(如,echo $?
)。这是正在发生的事情吗?还是我的提示有其他问题?很长的问题,我如何提示我使用最后一个退出代码?