LINUX.ORG.RU

Приветствие консоли ($PS1)

 ,


0

1

Всем доброго времени суток. Есть одна переменная, имя которой PS1. Хочу я чтобы эта переменная выводилась разной для разных пользователей не прибегая к локальным конфигам. Саму эту переменную составил, всё устраивает в ней, но случилась небольшая засада при отображении для разных пользователей - я хочу, чтобы руту вместо $ показывалась #, но никак не получается это сделать. А теперь подробней:

Редактирую файл /etc/bash.bashrc

Сама переменная:

PS1="\[\033[1;34m\]\u\[\033[1;32m\]@\[\033[1;34m\]\h\[\033[1;31m\]|\[\033[0;32m\]\W\[\033[1;31m\]$\[\033[0;37m\] "

Чтобы руту выводилось рутовое, а юзеру юзеровое, пишу ветвление:

if test "$UID" = 0; then
    PS1="\[\033[1;34m\]\u\[\033[1;32m\]@\[\033[1;34m\]\h\[\033[1;31m\]|\[\033[0;32m\]\W\[\033[1;31m\]$\[\033[0;37m\] "
else
    PS1="\[\033[1;34m\]\u\[\033[1;32m\]@\[\033[1;34m\]\h\[\033[1;31m\]|\[\033[0;32m\]\W\[\033[1;31m\]#\[\033[0;37m\] "
fi
Помещаю этот кусок кода в конце файла, запускаю терминал - не работает, делаю проверку на работоспособность, добавяя в ветвления строчки наподобии
    echo "I'm root."
, но как показывало $, так и показывает, не хочет в #, хотя проверку на срабатывание проходит.

ОК. Не получается, так не получается, шарюсь по листингу, нахожу кусок кода, отвечающего за $PS1, закомментировываю моё «хуйдожество», вношу изменения в дефолтные настройки. Запускаю, опять нифига.

Что я делаю не так? Почему приветствие не хочет меняться, когда я его изменяю? Мне уже просто интересно даже. Дистрибутив - OpenSUSE 13.1 таки.


Ответ на: комментарий от Stil

Не Gentoo же. По идее переменные должны обновляться при перезапуске терминала...

DMfake
() автор топика

А Вы загрузили новую конфигурацию?

source /etc/bash.bashrc

Faiver
()

А я не парился и просто руту в ~/.bashrc свой PS1 написал (где крупными красными буквами написано ROOT SESSION!!!), а себе — свой. Везде с выводом имени хоста, чтобы не вырубить по запарке не тот компьютер.

Вот что у меня:

export PS1="\[\033[1;33;41m\h>\]\[\033[1;32;40m \D{%d.%m, %H:%M}\] \[\033[1;33;40m\w\]\[\033[1;32;40m\]\[\033[0;37;40m\n"

и вот что у рута:

export PS1="\[\033[1;31;40m[\h ROOT SESSION \D{%d.%m %H:%M}\] \[\033[1;33;40m\w\]\[\033[1;32;40m]\]\[\033[0;37;40m\n"

Eddy_Em ☆☆☆☆☆
()

Кстати, а есть ли у тебя в ~/.bashrc такое:

if [ -f /etc/bash.bashrc ]; then
	. /etc/bash.bashrc
fi

???

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от sshvabodka

А Вы загрузили новую конфигурацию?

Конечно.

А я не парился и просто руту в ~/.bashrc свой PS1 написал

Можно и так, но мне интересно уже.

Кстати, а есть ли у тебя в ~/.bashrc такое:

У меня ~/.bashrc не обнаружилось, как ни странно...

man bash, раздел «PROMPTING».

Поставил /$ - не желает определять всё-равно...

Кстати, ни с того ни с сего собачка в приветствии вдруг поменяла свой цвет на зелёный.

DMfake
() автор топика
Ответ на: комментарий от sshvabodka
/$

Опечатался, пардон. В файле указан обратный слэш.

source /etc/bash.bashrc

Новую конфигурацию тоже загружал.

DMfake
() автор топика
Ответ на: комментарий от DMfake

Мда, забыл про экранирование символов. Экранировал \$ и всё стало так, как надо:

PS1="\[\033[1;34m\]\u\[\033[1;31m\]@\[\033[1;34m\]\h\[\033[1;31m\]|\[\033[0;32m\]\W\[\033[1;31m\]\\$\[\033[0;37m\] "
Спасибо всем отписавшимся.

DMfake
() автор топика
Ответ на: комментарий от DMfake

Уже не могу вспомнить, на одном из сервантов мне консолька анекдоты писала после логина. Это было давно и уже не правда.

everest2014
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.