使用“sudo -i”时如何保持 bash 中的颜色?

使用“sudo -i”时如何保持 bash 中的颜色?

我已将 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应该可以解决问题。

相关内容