08.03.2009 18:03
booley — Приглашение bash
В недавнем посте про Убунту говорилось о стандартном виде приглашения bash. Для забывчивых напомню: оно выглядело так:
user@desktop: ~$
Но приглашение может выглядеть совсем по другому. Как его изменить?
Приглашение задается переменной PS1.
Краткое уведение в сторону для новичков:
Существуют переменные окружения, в которых определяется самые разные вещи: где искать команды, приглашение, локаль, какую оболочку использовать. Для просмотра переменных наберите команду envДля присвоения значения достаточно набрать имяпеременной=значениепеременной
Но просто текст в приглашении бесполезен. Не будете же вы набирать каждый раз pwd, чтобы узнать текущий каталог, или whoami чтобы узнать текущий логин. Но у нас есть "метасимволы", вместо которых вставляются данные.
Некоторые из них:
* \a символ ASCII bell (7)
* \d дата в формате "День_недели Месяц День" (e.g., “Tue May 26?)
* \h имя хоста (до первой точки)
* \H имя хоста
* \j количество програм, контролируемых шеллом в текущий момент
* \n новая строка
* \r возврат каретки
* \s имя оболочки
* \t время в 24-часовом формате HH:MM:SS
* \T время в 12-часовом формате HH:MM:SS
* \@ время в 12-часовом формате (включая am/pm)
* \A время в 24-часовом формате HH:MM
* \u имя пользователя
* \v версия bash (e.g., 2.00)
* \V релиз, версия + уроверь патчев bash (e.g., 2.00.0)
* \w конец имени текущей директории, с $HOME = ~ (/etc/lighttpd показывается как lighttpd)
* \W полное имя текущей директории, с $HOME = ~
* \! номер этой команды в истории команд
* \# номер этой команды в текущем сеансе
* \$ если вы рут = #, иначе $
* \nnn восмеричный символ с кодом nnn
* \\ слэш
Не забудьте занести ваше идеальное приглашение в .bashrc (~/.bashrc), иначе все ваши изменения при следующем запуске bash будут забыты.
Теперь вы можете самостоятельно установить свое приглашение так, чтобы оно соответствовало вашим требованиям
Добавлю от себя:
Переменную PS1 обычно инициализируют в .bashrc, прописывая в файл строку вида:
PS1="\u@\w "
export PS1
Учитывая то, что этот файл по сути дела сценарии шелла, внутри них можно использовать разнообразные конструкции наподобие if, while и т.п. Исходя из этого, мы можем придавать приглашению разнообразный вид, используя различные условия. Пример того, как это сделано у меня:
WHITE="\<\033<0;37m\>"
CYAN="\<\033<1;36m\>"
if < "$UID" = "0" >; then
SPEC_SYMBOL="$RED#"
else
SPEC_SYMBOL="$LIGHTWHITE\$"
fi
PS1="$CYAN\W$SPEC_SYMBOL$WHITE "
Если я нахожусь в ~ и я юзер - ~$ , если я рут - ~#
З.Ы. Есть еще пременные окружения PS2, PS3 и PS4. Узнать больше о них, а также о PS1 можно набрав: man bash.
Переменную PS1 обычно инициализируют в .bashrc, прописывая в файл строку вида:
PS1="\u@\w "
export PS1
Учитывая то, что этот файл по сути дела сценарии шелла, внутри них можно использовать разнообразные конструкции наподобие if, while и т.п. Исходя из этого, мы можем придавать приглашению разнообразный вид, используя различные условия. Пример того, как это сделано у меня:
WHITE="\<\033<0;37m\>"
CYAN="\<\033<1;36m\>"
if < "$UID" = "0" >; then
SPEC_SYMBOL="$RED#"
else
SPEC_SYMBOL="$LIGHTWHITE\$"
fi
PS1="$CYAN\W$SPEC_SYMBOL$WHITE "
Если я нахожусь в ~ и я юзер - ~$ , если я рут - ~#
З.Ы. Есть еще пременные окружения PS2, PS3 и PS4. Узнать больше о них, а также о PS1 можно набрав: man bash.
Чего не хватает (имхо, естественно):
В гугле по запросу "linux bash PS1" уже в первой пятёрке всплывают замечательные ссылки, в том числе на весьма обширное HowTo по данному вопросу — в общем, даже если ты не разбираешься в вопросе достаточно подробно сейчас, знания можно легко добыть за пару часов.
За исм откланяюсь и пойду читать Bash Prompt HOWTO. Заинтересовало :)