Изменение поведения приглашения bash при работе от имени пользователя root

Перед тем, как щелкнуть мышью, это не типичный вопрос «как сделать так, чтобы моя подсказка bash имела цвет». Я уже настроил мою подсказку bash, чтобы она выглядела следующим образом:

[user @ host]----[$(pwd)]
$ 

, где все в скобках светло-голубого цвета, а все остальное (включая $) - черного цвета, добавив следующее в мой файл ~ / .bashrc

# Turn the prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi

Цель - сделать так, чтобы единственное, что меняется, когда я использую «sudo su», это то, что черный $ превращается в красный #. Я заглянул в /etc/bash.bashrc и / etc / profile, чтобы увидеть, есть ли строка для комментариев, но есть кое-что о debian_chroot, которое я не понимаю и не хочу напортачить. Как мне достичь того, чего я хочу?

П.С. Это то, что я хочу, чтобы приглашение выглядело как root

[user @ host]----[$(pwd)]
(red)#

edit: Отметьте это как исправленное, добавив приведенный выше код в ~ / .bashrc, пока root достиг моей цели. Кроме того, в приведенном выше коде $ (pwd) отображает только домашний каталог (я полагаю, потому что это рабочий каталог при открытии терминала) и никогда не обновляется. Замена $ (pwd) на \ w исправляет это, но отображает домашний каталог как ~, чего я пытался избежать.

14
задан 7 June 2013 в 04:23

4 ответа

Это также будет зависеть от того, как вы станете пользователем root. Вам необходимо внести изменения в .bashrc пользователя root, если вы используете что-то вроде su - root или sudo -i, где вы читаете в среде.

С sudo -s вы должны читать свой собственный .bashrc.

Рассмотрите возможность добавления некоторых операторов printf или echo для отладки вашего кода, чтобы сообщить вам, когда он был выполнен.

Используйте команду id, чтобы убедиться, что вы тот, кем вы себя считаете:

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)
0
ответ дан 7 June 2013 в 04:23

Чтобы изменить цвет приглашения на красный для root, я изменил файл .bashrc, следуя примерам в этой теме.

regularuser@myubuntubox:~$ sudo su - 
root@myubuntubox:~# vim .bashrc

Затем, в vim, найдите окончательный вид назначения PS1 и добавьте следующее после него (обратите внимание, что он обновляет значение $PS1, так что другие предыдущие строки не нужно изменять, и изменение легко обратимо):

# Set RED prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"
0
ответ дан 7 June 2013 в 04:23

После правильного ответа belacqua https://askubuntu.com/a/305053/12218 путем выдачи sudo su загружается root .bashrc.

Вы можете проверить это, введя sudo su, затем cd ~, и вы увидите, что находитесь в домашнем каталоге root.

Используя sudo su, вы входите в систему как пользователь root (su = switch user), в отличие от
sudo do some administrative task как пользователь с повышенными привилегиями.

Таким образом, используя sudo su, вы становитесь фактическим корнем, а изменения, внесенные в среду, являются изменениями, внесенными специально в корень, то есть: sudo su, за которым следует vim .bashrc.

0
ответ дан 7 June 2013 в 04:23

Следующее может помочь

export PS1='`[ $(id -u) == "0" ] && echo "#" || echo ">"` '

Это покажет '> ' для обычного пользователя и '# ' для root. Это все еще должно быть в корне .bashrc.

0
ответ дан 7 June 2013 в 04:23

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

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