Страница 1 из 1

Раскраска логин-шелла

Добавлено: 2012-09-23 5:34:06
Гость
При добавлении в /etc/profile следующий код раскрасит любой sh-совместимый логин-шелл (sh, bash, и т.д.) для пользователя:

Код: Выделить всё

bg_black=40
fg_red=31
fg_green=32
fg_yellow=33
fg_magenta=35
fg_cyan=36

case `id -u` in
 0) PS1=`echo -e '\E[${fg_red};${bg_black}m'"\033[1m# \033[0m"`;;
 *) PS1=`echo -e '\E[${fg_green};${bg_black}m'"\033[1m> \033[0m"`;;
esac
Но как сделать чтобы зайдя через su или sudo цвет приглашения сохранялся?

Re: Раскраска логин-шелла

Добавлено: 2012-09-23 6:11:17
Гость
С sudo прокатывает такая штука в /etc/profile:

Код: Выделить всё

export SUDO_PS1=`echo -e '\E[${fg_yellow};${bg_black}m'"\033[1m# \033[0m"`
Но только один (первый) раз! Если теперь находясь в судо-шелле запустить sh, то получается такая некрасивость:

Код: Выделить всё

[color=#00BF00]>[/color] sudo -s
[color=#FFFF00]#[/color] sh
fg_yellow};${bg_black}m[color=#FFFF00]#[/color]
Как сделать просто эскейп без echo в приглашении который будет работать во всех sh-совместимых шеллах?

Re: Раскраска логин-шелла

Добавлено: 2012-09-23 6:16:28
Гость
P.S.: шелл юзверя - баш, шелл рута - системный sh.
P.P.S.: не знал что в коде теги не работают. :cz2:

Re: Раскраска логин-шелла

Добавлено: 2012-09-23 15:25:35
Alex Keda
код затем и придуман =)

Re: Раскраска логин-шелла

Добавлено: 2012-09-23 22:22:06
Гость
Разобрался: оказалось, что во фряхе родной /bin/sh - это Korn Shell.
у него эскейп-коды заключаются в $' '

И чтобы цвета были во всех логин-шеллах в системе надо прописать:

Код: Выделить всё

# red=31
# green=32
# yellow=33
# magenta=35
# cyan=36
# white=37

export SUDO_PS1=$'\e[33m'"# "$'\e[0m'

case `id -u` in
 0) PS1=$'\e[31m'"# "$'\e[0m'
 ;;
 *) PS1=$'\e[32m'"> "$'\e[0m'
 ;;
esac
так у юзеров будет >, у рута #, а при sudo -s должно быть #. но у меня почему то коричневый.
вставить в эскейп-коды переменные не получилось :(