我已将 PS1 变量更改/etc/bash.bashrc
为
PS1="\n\[\033[0;37m\]\342\224\214\342\224\200\$(if [[ \$? == 0 ]]; then echo \"[\[\033[0;32m\]\[\033[01;32m\]\342\234\223\[\033[0;37m\]]\342\224\200\"; else echo \"[\[\033[0;32m\]\[\033[01;31m\]\342\234\227\[\033[0;37m\]]\342\224\200\"; fi)[$(if [[ ${EUID} == 0 ]]; then echo '\[\033[0;31m\]\h'; else echo '\[\033[0;33m\]\u\[\033[0;37m\]@\[\033[0;96m\]\h'; fi)\[\033[0;37m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;37m\]]\n\[\033[0;37m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]"
它对所有命令都适用。但是当我运行sudo -i
命令时,PS1 值变为默认值。要恢复配色方案,我必须PS1=<same value>
手动运行。知道是什么原因导致了这种行为吗?
答案1
我本来要PS1
根据 Alaa Ali 的回答添加,但是我发现了以下几行:
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=no
我将其改为force_color_prompt=yes
,然后exit
,重新登录,然后就好了!颜色!
我在 Ubuntu (disco) 上,希望这有帮助。我认为它比 PS1 更好,因为有很多代码依赖于这个变量,我不知道它到底在做什么,但有人已经写了,我不想浪费他/她的时间 :-)
答案2
将该行添加PS1
到/root/.bashrc
。
颜色恢复为默认颜色的原因是,当您执行 时sudo -i
,它会“模拟”root 登录,并反过来获取(应用)root 的.bashrc
,从而使颜色恢复为默认颜色。因此,将这PS1
行添加到 root.bashrc
应该可以解决问题。