Переменные оболочки и окружения
Bash позволяет временно сохранять данные в переменных оболочки. Пере- менные оболочки размещаются в памяти автоматически при присвоении им значения через знак равенства. В примере 2.21 переменной VAR1 присваива- ется значение Privet!.
Пример 2.21. Переменная оболочки |
$ VAR1=Privet!
$ echo $VAR1 Privet!
Для извлечения значения переменной необходимо перед ее именем устано- вить знак доллара ($). Команда echo выводит значение переменной VAR1.
Имя переменной должно состоять только из букв и цифр. Допускается при- менение символа подчеркивания. Первый символ в имени переменной дол- жен быть либо буквой, либо символом подчеркивания. Пробелы в имени пе- ременной не допускаются. Желательно (но не обязательно) использовать в именах переменных только большие буквы для того, чтобы не путать имена команд и имена переменных.
Если переменная должна содержать строку с пробелами, то строку следует экранировать с помощью одиночных или двойных кавычек (пример 2.22). Другой вариант: перед пробелами можно ставить экранирующий символ об- ратной косой черты (\).
Пример 2.22. Переменная, содержащая строку с пробелом |
$ VAR1='Bolshoy Privet!'
$ echo $VAR1 Bolshoy Privet!
При необходимости добавления строки к значению переменной имя пере- менной следует взять в фигурные скобки для отделения имени переменной от последующей строки (пример 2.23).
Пример 2.23. Экранирование имени переменной |
$ VAR1=${VAR1}ZZ
$ echo $VAR1 Bolshoy Privet!ZZ
Для получения списка всех переменных, определенных в текущей оболочке, следует использовать команду set без аргументов. Если вы хотите уничто- жить переменную, то для этого достаточно выполнить команду unset, указав в качестве ее аргумента имя переменной.
Переменные оболочки доступны только в той оболочке, в которой они были описаны. Однако можно сделать переменную доступной для дочерних про- цессов этой оболочки, преобразовав ее в переменную окружения с помощью команды export (пример 2.24). Команда export записывает переменную в окружение оболочки, которое копируется в окружение дочерних процессов оболочки.
Пример 2.24. Экспортирование переменной |
$ VAR1=Privet
$ export VAR1
$ pdksh
$ echo $VAR1 Privet
$ exit
Переменная VAR1 в примере 2.24 получила значение Privet, а затем экспор- тирована. Это сделало ее доступной в дочернем процессе — в порожденной оболочке pdksh.
Все переменные окружения могут быть получены с помощью команды env.
Окружение — это один из способов передачи информации процессов в сис- теме друг другу (табл. 2.2). Часто изменение значения какой-либо перемен- ной окружения приводит к изменению поведения программ. Например, если значение переменной HOME установлено неверно, то команда cd не будет воз- вращать вас в домашний каталог.
Таблица 2.2. Важнейшие переменные окружения
Переменная окружения | Содержимое |
HOME | Путь к домашнему каталогу пользователя |
LOGNAME и USER | Имя пользователя |
Путь к почтовому ящику пользователя | |
PATH | Путь поиска исполняемых файлов |
PS1 | Вид приглашения оболочки |
PWD | Имя текущего каталога |
OLDPWD | Имя предыдущего каталога |
SHELL | Оболочка, указанная в учетной записи |
TERM | Тип терминала |
LANG | Тип локализации (локаль) |
HOSTNAME | Имя хоста |
SHLVL | Номер оболочки (при входе в сеанс — 1, для дочерней — 2 и т. д.) |
Переменная окружения PS1 определяет вид приглашения оболочки (при- мер 2.25). Вид приглашения кодируется специальными символами. Символ \u устанавливает вывод имени пользователя. Символ \W устанавливает вывод имени текущего каталога, а символ \h отображает в строке приглашения Bash имя хоста. В Bash существуют также и другие специальные символы для переменной PS1. Они описаны в документации на Bash.
Пример 2.25. Переменная окружения PS1 |
[user1@work tmp]$ echo $PS1 [\u@\h \W]\$
При выходе из сеанса установленные значения переменных будут стерты, т. к. оболочка завершит работу. Для автоматической установки при входе в сеанс необходимых переменных окружения их следует инициализировать в файлах профиля.
Переменные окружения, общие для всех пользователей, хранятся в файле
/etc/profile, а настройки, специфичные для конкретных пользователей, хранятся в одном из файлов домашнего каталога пользователя: либо в ~/.bash_profile, либо ~/.bash_login, либо ~/.profile. Эти файлы выполняются автоматически при каждом входе в сеанс. При запуске оболочки Bash из командной строки выполняется файл профиля ~/.bashrc.
Подробнее о файлах профиля будет рассказано далее.
Дата добавления: 2015-06-12; просмотров: 803;