@Asparagales

Как настроить приглашение к вводу в bash?

Хочу настроить приглашение к вводу в bash на свой вкус и цвет. Для обычного пользователя в файл ~/.bashrc добавил следущую строку:

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

Результат получился такой, какой и был нужен: строка приглашения имеет синий цвет и выгляди примерно так:
[user@host] ~ $

Такого же эффекта я пытаюсь добиться для пользователя root, только приглашение к вводу должно иметь красный цвет. Для этого я внес в файл /root/.profile следующую запись:

PS1="\[\033[0;31m\][\u@\h] \W \$\[\033[0m\] "

Это принесло желаемый результат, но не полностью. Символ \$ в записи ответственен за вывод символа $ в приглашении к вводу для обычного пользователя и символа # для рута. Но у меня символ $ выводится и для рута тоже. Есть возможность это исправить?

Дополнение. Описанный выше результат наблюдается, если я в bash переключаюсь на учетную запись root при помощи команды su - . Если же использовать просто su, то никакого результата вообще нет. Файл /root/.profile не работает.
  • Вопрос задан
  • 544 просмотра
Пригласить эксперта
Ответы на вопрос 2
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Ну, начать надо с того, что в bash вообще не гарантируется работа .profile - если только сам добавишь. По умолчанию, bash считывает сначала .bash_profile, а потом .bashrc. Файл .profile читается, когда запускаешь /bin/sh.

Настройку PS1 лучше делать не в .bash_profile (который читается один раз при логине), а в .bashrc (который читается при любой интерактивной сессии). Почему? PS1 запросто может быть перебито например mc, который имеет обыкновение ломать его своим субшеллом :)

Часть /root/.bashrc
mch=`hostname -s`
PS1='\[\033[01;32m\]${mch:q}:\[\033[01;34m\][$USER]\[\033[01;36m\] \! \[\033[01;31m\]#\[\033[00;38m\] '
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Так собственно "-" в команде su и обозначает - прочитать профайл пользователя, иначе вы просто наследуете права root без выполнения его профайла.

А так - еще много зависит от дистрибутива.
Проверьте глобальные настройки в /etc/profile.d - в RedHat там может быть например RootPrompt.sh, который выполняется для рута и перебивает ваши настройки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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