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