Введение
Строка приветствия или приглашения (prompt) представляет собой текст, после которого пользователь может вводить команды в терминале Linux. В каждом дистрибутиве Linux строка приветствия имеет свою форму, например в CentOS 7 по умолчанию она выглядит так:
Форма строки приглашения хранится в переменной PS1
.
Увидеть шаблон, по которому строится строка приглашения можно с помощью вывода переменной PS1
.
echo $PS1
[oleg@meliorem ~]# echo $PS1
[\u@\h \W]\$
Как видим строка состоит из обычных символов, которые выводятся в терминале как есть и экранированных символов вместо которых подставляются следующие данные:
- \u - (user) имя текущего пользователя.
- \h - (host) имя текущего хоста.
- \W - (working directory) путь к рабочему каталогу (каталог, где сейчас находится пользователь).
- \\$ - тип пользователя (# - для root, $ - для обычных пользователей).
Как изменить формат строки приглашения в терминале
Перед тем как изменять строку приглашения рекомендую сохранить ее текущий формат, чтобы в любом случае можно было все вернуть назад.
Сохраним текущий формат строки приветствия в новую переменную - PS1_SAVE
.
PS1_SAVE=$PS1
Чтобы изменить формат строки приглашения, нужно изменить значение переменной - PS1
. Самая простая строка приглашения этот всего лишь один символ с пробелом.
PS1="► "
[oleg@meliorem ~]# PS1="► "
►
Обычный текст не блещет информативностью, поэтому кроме него вам могут пригодиться экранированные символы, их список вы можете видеть ниже.
Простые экранируемые символы
- \a - звуковой сигнал (ASCII: 07)
- \e - символ escape-последовательности
- \" - двойные кавычки
- \\ - обратный слэш
- \n - новая строка
- \r - возврат каретки (курсора) на начало строки
- \[- начало последовательности непечатных символов
- \] - конец последовательности непечатных символов
- \nnn - восьмеричный код символа (\113 -> K)
Вывод даты и времени
- \d - дата в формате "день недели месяц число"
- \D{формат даты} - дата в указанном формате, например \D{%d.%m.%Y}
- \@ - время в 12 часовом формате "часы:минуты AM\PM"
- \A - время в 24 часовом формате "часы:минуты"
- \t - время в 24 часовом формате "часы:минуты:секунды"
- \T - время в 12 часовом формате "часы:минуты:секунды
Вывод системной информации
- \h - имя хоста до первой точки
- \H - полное имя хоста
- \j - количество работ (jobs), выполняемых в терминале (скрытых после нажатия Ctrl+Z)
- \s - имя текущей оболочки (вывод значения переменной - $0)
- \u - имя текущего пользователя
- \v - версия оболочки BASH
- \V - более детальная версия оболочки BASH
- \w - полный путь к текущей директории
- \W - имя текущей директории
- \! - номер текущей команды в истории команд
- \# - номер текущей команды за период сессии
- \\$ - тип пользователя (# - для root, $ - для всех остальных)
Рассмотрим пример создания кастомной строки приглашения. Выведем имя пользователя, имя хоста и полный путь для каталога, а с новой строки - тип пользователя.
PS1="\u@\h:\w\n\$ "
[oleg@meliorem ~]# PS1="\u@\h:\w\n\\$ "
oleg@meliorem:/var/www
#
Если вы хотите вернуть все назад то просто вставьте значение переменной PS1_SAVE
, в которой мы сохранили изначальный вид строки приглашения.
PS1=$PS1_SAVE
Для того чтобы изменения переменной PS1
были сохранены для последующих сессий в терминале, нужно прописать значение этой переменной в файлах настроек терминала ~/.bashrc
или /etc/bashrc
.
Сохранение нового формата строки приглашения на постоянной основе
При каждом запуске терминала значение переменной PS1
устанавливается в соответствии с тем значением, которое указано в файле /etc/bashrc
. Однако крайне не рекомендуется изменять что-либо в этом файле. Вместо редактирования файла /etc/bashrc
предусмотрен специальный каталог /etc/profile.d
, в котором можно создавать свои файлы *.sh
с необходимым вам функционалом.
Создадим файл /etc/profile.d/custom.sh
для необходимой нам настройки оболочки bash. Данный файл будет автоматически импортирован в /etc/bashrc
, поэтому никаких дополнительных действий не потребуется.
touch /etc/profile.d/custom.sh
Далее уставим нужное нам значение переменной PS1
, я также добавлю немного цвета для строки приветствия.
vi /etc/profile.d/custom.sh
PS1="\e[1;38;5;48m\u@\h\e[m:\e[1;38;5;45m\w\e[m\n\\$ "
# Добавим сообщение для авторизованных пользователей
logged_user=$USER # Логин пользователя
echo -e "\e[1;38;5;215mЗдравствуйте ${logged_user^}, добро пожаловать на сервер meliorem.ru!\e[0m"
Для применения новых настроек в файле /etc/profile.d/custom.sh
необходимо перезапустить терминал. Также для перезапуска можно использовать команду exec.
exec bash
Теперь когда пользователь будет заходить в свою учетную запись в терминале, он увидит следующий результат.
Важно, что все эти настройки будут применены для всех пользователей. Если вы хотите настроить bash только для одного пользователя, то используйте скрытый файл .bashrc
, который находится в домашнем каталоге пользователя. Для применения настроек в ~/.bashrc
необходимо будет перезапустить оболочку - source ~/.bashrc
Вы также можете раскрасить свою строку приветствия, о том как это сделать вы можете почитать здесь.