/bin/bash
Выполняемый файл bash
/etc/profile
Общесистемный файл инициализации, выполняется начальными командными интерпретаторами
~/.bash_profile
Личный файл инициализации, выполняется начальными командными интерпретаторами
~/.bashrc
Отдельный файл начального запуска для интерактивных командных интерпретаторов
~/.bash_logout
Отдельный файл очистки для начального командного интерпретатора, выполняемый при
завершении его работы
~/.inputrc
Отдельный файл инициализации библиотеки readline
Ранее в этом руководстве обсуждались настройки, изменяющие поведение
командной оболочки Bash. Другой метод заключается в изменении переменных
среды. Переменные среды можно использовать не только для настройки
поведения Bash, но и для передачи информации командам, запускаемым из
командной оболочки. В таблице 3 показан список некоторых наиболее
распространенных переменных среды, значения которых можно изменить.
Таблица 3. Стандартные переменные среды Bash
Переменная Описание
BASH В переменной BASH содержится полный путь до исполняемого файла командной оболочки Bash.
BASH_VERSION В переменную BASH_VERSION записывается версия Bash.
CLASSPATH CLASSPATH содержит список каталогов для поиска файлов классов Java и архивов Java.
HOME HOME - это домашний каталог текущего пользователя.
HOSTNAME В переменной HOSTNAME хранится имя компьютера.
LANG LANG - это текущая установка локали, которая позволяет настроить
командную оболочку для использования в различных странах и на различных
языках.
OSTYPE В переменной OSTYPE содержится описание операционной системы.
PATH PATH - это список каталогов для поиска команд и приложений, когда полный путь к файлу не задан.
PS1 PS1 используется как основная строка приглашения.
PS2 PS2 используется как вторичная строка приглашения.
PROMPT_COMMAND Эта команда должна быть выполнена до отображения строки приглашения Bash.
PWD PWD - это полный путь к текущему рабочему каталогу.
SHELL SHELL - это полный путь к текущей командной оболочке.
USER В переменной USER содержится имя текущего пользователя.
Для отображения текущего значения переменной среды можно использовать
команду echo так, как это было продемонстрировано ранее в этом
руководстве, когда отображалось значение переменной SHELL. Для изменения
значения переменной необходимо присвоить ей новое значение командой
$varname=new-value, а затем экспортировать установленное значение в Bash
командой export $varname. Изменение переменных среды необходимо
производить с осторожностью. Если допустить ошибку, в лучшем случае вы
получите неработающую командную оболочку. Как правило, пользователь
изменяет только переменные PATH, PS1 и связанные с ними переменные
среды, так как они используются для нахождения программ и их компонентов
или для изменения поведения строки приглашения Bash.
В начало
Настройка строки приглашения Bash
Изменение строки приглашения Bash - в действительности более мощное
средство, чем может показаться на первый взгляд. Можно не только
изменить текст, который появляется в строке приглашения, но и текущее
время, имя пользователя, имя компьютера, а также текущий каталог. Можно
также изменить цвет фона и текста, который выводится в окне терминала.
Чтобы изменить вид строки приглашения, необходимо просто изменить
значение переменной среды PS1. Чтобы приглашение командной строки
выглядело как I am the Greatest!$ , нужно ввести команду PS1='I am the
Greatest!\$ ' и нажать Enter. Уже в этом простом примере следует
отметить несколько моментов. Во-первых, необходимо заключать строку в
кавычки. Во-вторых, нужно заканчивать строку символом пробела, чтобы
набираемый в командной строке текст отделялся от приглашения командной
строки. Это важно, когда необходимо просмотреть набранные ранее команды
(и вывод этих команд) в окне терминала. Наконец, используется
управляющая последовательность \$, а не просто знак доллара. Это
заставляет Bash отображать знак доллара ($), когда пользователь является
обычным пользователем системы, но заменять знак доллара решеткой (#),
когда пользователь является суперпользователем (root). Когда есть
необходимость в администрировании компьютера, изменение вида значка
играет важную роль, предупреждая об особой ответственности пользователя
root.
Bash поддерживает ряд специальных управляющих последовательностей,
которые упрощают настройку внешнего вида приглашения командной строки.
Для полного обзора таких управляющих последовательностей необходимо
прочитать соответствующие страницы руководства man или заглянуть в
материалы из раздела Ресурсы. Наиболее популярны следующие управляющие
последовательности:
* \u заменяется на имя текущего пользователя.
* \h заменяется на имя компьютера (вплоть до первой точки в DNS-имени).
* \w заменяется на текущий рабочий каталог (~ означает домашний каталог пользователя).
* \t заменяется на время в 24-часовом формате (HH:MM:SS).
* \A заменяется на время в 24-часовом формате (HH:MM).
* \e (управляющий символ в коде ASCII) передает окну терминала более сложные опции.
* \[ означает начало последовательности непечатаемых символов.
* \] означает окончание последовательности непечатаемых символов.
Знание этих последовательностей помогает понять, каким образом
модифицировать приглашение командной строки. Например, в моем файле
.bashrc установлено значение PS1='\u\$ ', которое заменяется на rb$, так
как все команды запускаются обычным пользователем с именем rb. Более
сложный пример такой: PS1='[\A][\u@\h:\w]\$ ', который заменяется,
скажем, на такое значение: [14:14][rb@home:~]$, если текущее время
составляет 2:14 после полудня, пользователь зашел на компьютер home под
именем rb и работает в своем домашнем каталоге. Информация такого сорта
может быть полезна, если вы работаете на нескольких компьютерах в разных
окнах терминалов. Установив такие приглашения командной строки в каждой
командной оболочке Bash, можно сразу видеть, какое окно соответствует
какому компьютеру.
Другой хороший прием для быстрого получения информации - это
использование цвета в качестве разделителя. Пользователи, которые долго
работают в окне терминала и вынуждены возвращаться к выводу ранее
запущенных команд, знают, насколько сложно разглядеть приглашение
командной строки в символах одинакового цвета. К счастью, можно изменить
цвет приглашения командной строки, что выделит его из обычного текста.
Чтобы показать, что вводится значение цвета, необходимо ввести
управляющую ASCII-последовательность \e. Фактически эта управляющая
последовательность используется всегда, когда необходимо передать в Bash
непечатающуюся управляющую последовательность. Для цветов используется
строка вида \e[##m или \e[##;##m, где символы ## обозначают специальный
номер. Первая форма используется, когда устанавливается цвет текста или
фона. Вторая форма используется, когда требуется установить цвет текста и
использовать дополнительный код, говорящий специальных возможностях,
таких как яркие цвета вместо светлых. Собирая все сказанное вместе,
можно раскрасить предыдущее приглашение командной строки следующим
образом: PS1='\e[1;31m[\A]\e[1;34m[\u@\h:\w]\e[0m\$ '. Результатом будет
приглашение командной строки, которое отображает время ярко-красным
цветом, а имя пользователя, имя компьютера и текущий рабочий каталог -
ярко-синим цветом. Отметим установку цветового кода в ноль (который
обозначает значение по умолчанию) в конце приглашения командной строки.
Это позволяет легко отделить любую набранную команду или вывод команды
от приглашения командной строки.
Одна из сложностей, возникающая при использовании таких управляющих
последовательностей ASCII, состоит в том, что Bash вычисляет количество
символов в приглашении командной строки и использует это число для
размещения текста в терминальном окне. Так как коды цветов не выводятся
на экран, то они мешают корректному подсчету. Чтобы предотвратить
подсчет непечатаемых символов, управляющие последовательности необходимо
заключать в управляющие скобки \[ и \]. Иногда можно заключить в
управляющие скобки несколько управляющих последовательностей, но хорошим
тоном считается ставить управляющие скобки на каждую управляющую
последовательность отдельно. Учитывая все это, можно модифицировать
приглашение командной строки Bash следующим образом:
PS1='\[\e[1;31m\][\A]\[\e[1;34m\][\u@\h:\w]\[\e[0m\]\$ '.
Полный список кодов цветов не входит в это руководство и зависит от типа
используемого терминала. Вдобавок существуют другие управляющие
последовательности, которые можно использовать для дальнейшей настройки
вида и поведения окна терминала. Для более подробной информации
необходимо обратиться к страницам руководства man или к одному из
материалов, перечисленных в разделе Ресурсы.
В начало
Использование файлов инициализации Bash
К сожалению, при перезапуске Bash все сделанные настройки сбрасываются.
Однако существует несколько возможностей сохранить настройки между
сеансами работы. При старте нового сеанса Bash (в общем случае это
происходит, когда открывается окно терминала), считывается два файла
настроек Bash. Первый из них, /etc/profile, позволяет администратору
изменить настройки, влияющие на всю систему и применяющиеся к каждой
запущенной пользователем командной оболочке. Второй файл,
~/.bash_profile или ~/.profile - это пользовательский файл настройки,
который позволяет контролировать установки Bash на уровне пользователя.
Необходимо помнить, что символ "тильда" обозначает домашний каталог
пользователя. Если имя файла начинается с точки, то этот файл является
скрытым, что усложняет его случайное удаление или перемещение. Поэтому
многие системные конфигурационные файлы начинаются с точки.
Каждый раз при старте командной оболочки Bash (после того, как началась
сессия работы командной оболочки) вместо файла ~/.bash_profile
считывается , новый файл - ~/.bashrc. Чтобы не запутаться, рекомендуется
сохранять все настройки (такие как настройки переменных среды) в файле
~/.bashrc file и включать этот файл в файл инициализации сессии. Это
легко сделать, добавив строку source ~/.bashrc в конец файла
~/.bash_profile, как это показано в листинге 4. Существуют и другие
возможности для изменения настроек, включая изменение строки приглашения
Bash (изменением переменной среды PS1), изменение цветов, отображаемых
терминалом и даже команды, которые должны быть выполнены при выходе из
Bash (используя файл ~/.bash_logout).
|