Bash 提示符在 ls 上改变颜色

Bash 提示符在 ls 上改变颜色

我的提示是:

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]':)'\[\e[0m\]; else echo \[\e[31m\]':('\[\e[0m\]; fi\` \e[0;1m\w\e[1m\n\$ "

问题是当我使用 ls 时,提示符的颜色会更改为使用 ls 输出的最后一行的颜色。例如,如果我有一个名为 z 的文件,输入 ls 后提示符会变为灰色(以匹配 ls 中的文件颜色),这种行为让我抓狂。

有人知道我该如何解决这个问题吗?我想将整个提示设置为白色,表情符号则使用不同的颜色。

(我的提示根据最后一个命令的结果输出 :) 或 :(,显示 pwd 的目录路径,然后转到新行进行命令输入)

我已启用 force_color_prompt 但无济于事。

答案1

解决了。

新的提示(添加了 \u@\h,因为我忘了)是

export PS1="\e[0;1m\u@\h]\`if [ \$? = 0 ]; then echo \[\e[33m\]':)'\[\e[0m\]; else echo \[\e[31m\]':('\[\e[0m\]; fi\` \e[0;1m\w\e[1m\n\$ "

在提示的最开始处添加e[0;1m\开始为提示着色。难以置信我竟然忽略了这一点。

本质上,提示符的颜色发生了变化,因为终端的颜色与 ls 之前输出的颜色不同。我以前以为这是问题所在,但搞不清楚给第一位着色所需的语法。

相关内容