Как сохранить окраску в 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> вручную. Есть идеи, что может быть причиной такого поведения?

3
задан 7 September 2013 в 03:04

2 ответа

Добавьте строку PS1 к /root/.bashrc.

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

0
ответ дан 7 September 2013 в 03:04

Я собирался добавить 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, входит в систему назад, и voilГ! Цвета!

я нахожусь на Ubuntu (дискотека), надежда что эта справка. Я думаю, что это лучше, чем PS1, потому что существует много кода, который зависит от этой переменной, я не знаю точно, что делает, но кто-то записал это, я не хочу тратить впустую его время :-)

2
ответ дан 10 October 2019 в 11:27

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

Похожие вопросы: