Как сохранить окраску в bash при использовании `sudo -i`?

Я изменил переменную 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 линия к /root/.bashrc,

Причина, по которой цвет возвращается к значению по умолчанию, заключается в том, что когда вы делаете sudo -iон "имитирует" root-логин и, в свою очередь, использует (применяет) root-логины .bashrc, который возвращает цвет по умолчанию. Так что добавление PS1 линия к корню .bashrc должен сделать свое дело.

Я собирался добавить PS1после ответа Алаа Али, и я нашел следующие строки:

# 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 (дискотека), надеюсь, что это поможет. Я думаю, что это лучше, чем PS1, потому что есть много кода, который зависит от этой переменной, я не знаю точно, что делает, но кто-то написал это, я не хочу тратить его / ее время:-)

Другие вопросы по тегам