- •И.Н.Акуленок
 - •Утверждено советом университета
 - •Введение
 - •Глава 1. Текстовые редакторы
 - •1.1. Редактор ed
 - •1.1.1. Команды, не использующие адресации строк
 - •1.1.2. Команды, использующие один адрес
 - •1.1.3. Команды, использующие два адреса
 - •1.1.4. Нумерация строк
 - •1.1.5. Примеры использования команд
 - •1.2. Редактор VI и ex
 - •1.2.1. Редактирование нескольких файлов
 - •1.2.2. Вставка текста из одного файла в другой
 - •1.3. Потоковый редактор sed
 - •1.4. Контрольные вопросы
 - •Глава 2. Командные процессоры ос unix
 - •2.1. Типы командных процессоров
 - •2.2. Идентификация и смена оболочки
 - •2.3. Запуск shell и стартовых shell–файлов
 - •2.4. Установка переменных среды
 - •2.5. Псевдонимы команд
 - •2.6. Выполнение .Profile после его изменения
 - •2.7. Контрольные вопросы
 - •Глава 3. Интерпретатор shell
 - •3.1. Shell–переменные
 - •3.1.1. Задание значений переменных и их отмена
 - •3.1.2. Экспорт переменных
 - •3.2. Специальные символы
 - •3.2.1. Использование двойных кавычек и апострофа
 - •3.2.2. Обратные апострофы
 - •3.2.3. Обратная наклонная черта
 - •3.3. Позиционные переменные
 - •3.4. Код завершения процесса
 - •3.5. Конвейеры и списки
 - •3.6. Композиции команд
 - •3.5.1. Порожденный shell – оператор круглые скобки ( )
 - •3.5.2. Оператор списка – фигурные скобки {}
 - •3.6. Контрольные вопросы
 - •Глава 4. Программные структуры
 - •4.1. Команда test
 - •4.1.1. Условия проверки файлов
 - •4.1.2. Условия проверки строк
 - •4.1.3. Условия сравнения целых чисел
 - •4.1.4. Сложные условия
 - •4.2. Команда expr
 - •4.3. Команда read
 - •4.4.Условный оператор if
 - •4.5. Оператор цикла for
 - •4.6. Операторы цикла while и until
 - •4.7. Оператор вызова case
 - •4.8. Функции в shell
 - •4.9. Контрольные вопросы
 - •5. Создание сценария командного процессора
 - •5.1. Пример простейшего сценария
 - •5.2. Основные этапы разработки сценария
 - •5.3. Отладка командных процедур
 - •5.4. Выполнение shell–программ
 - •5.5. Создание новых команд
 - •5.6. Контрольные вопросы
 - •Список литературы
 - •Оглавление
 - •Акуленок Ирина Николаевна
 
2.4. Установка переменных среды
Предопределенные переменные содержатся в среде окружения командного процессора независимо от установок, которые может сделать пользователь в стартовых файлах. Имена предопределенных переменных среды окружения во всех командных процессорах, кроме csh (и, в некоторых случаях, tcsh) пишутся символами верхнего регистра: PATH, USER, TERM, PS1, PS2.
В любых командных процессорах заранее определены переменные, перечисленные в табл.2.2.
Таблица 2.2
Перечень системных переменных
| 
			 Переменная  | 
			 Смысл  | 
| 
			 HOME  | 
			 Домашний каталог пользователя  | 
| 
			 SHELL  | 
			 Текущий shell  | 
| 
			 PS1  | 
			 Вид приглашения shell'a  | 
| 
			 PS2  | 
			 Вид приглашения "продолжение команды"  | 
| 
			 TERM  | 
			 Тип терминала пользователя  | 
| 
			 USER или LOGNAME  | 
			 Имя пользователя  | 
| 
			 PATH  | 
			 Список каталогов, где надо искать программы, когда пользователь запускает программу, указывая только ее имя, но не путь. Каталоги разделяются двоеточиями  | 
«HOME» – имяначальногокаталога. При выполнении командыcdбез аргумента интерпретаторshellвсегда автоматически возвращает вас в начальный каталог.
«PATH» – строка поиска, применяемая при обработке вводимых команд. Обычно строка поиска включает текущий каталог,/bin,/usr/bin, поскольку наиболее часто вызываемые команды UNIX принято хранить именно в них. Практически любая ОС UNIX содержит большое число каталогов (порядка несколько тысяч), и на их просмотр потребовалось бы очень много времени. Чтобы ограничить круг просматриваемых каталогов, в UNIX применяется специальное средство – строка поиска, представляющая собой список тех каталогов, в которых ищется требуемая программа. Такая строка может быть модифицирована для просмотра дополнительных каталогов.
Для просмотра значения переменной используется команда echo. Имени переменной предшествует символ$. Этот символ информируетshellо том, что следующее за ним имя относится к переменной, а не к файлу.
$ echo $PATH
:/bin/:/usr/bin:$HOME/bin
Начальное двоеточие представляет «невидимый» или «нулевой» маршрут. Нулевой маршрут интерпретируется командным процессором как текущий каталог, поэтому это будет первый каталог, в котором командный процессор выполняет поиск вызываемой команды.
Затем поиск будет осуществляться в каталогах /bin,/usr/binи в каталоге/binдомашнего каталога. В строке поиска каталоги разделены двоеточием, а для указания текущего служит пустое имя. Оно может быть задано также::либо:в начале строки.
/bin/::/usr/bin– Здесь нулевой маршрут более «видим» и представляется пустой записью между двумя последовательными двоеточиями. Согласно этому определению, поиск осуществляется в каталоге/bin, потом в текущем каталоге, потом в каталоге/usr/bin, потом в каталоге/binдомашнего каталога.
«IFS» – внутренние разделители полей, которыми обычно служат пробелы, табуляции и символы новой строки. Внутренние разделители полей разделяют слова в команде.
«PS1» и «PS2» – начальные строки приглашений интерпретатораshell.«PS1» – применяется как обычное приглашение, «PS2» – для дополнительных операций, завершающих ввод незаконченных команд.
Предположим, что вы не хотите все время вводить команду pwdдля определения своего местонахождения. Для этого достаточно установить переменную средыPS1так, чтобы включить в стимул текущий рабочий каталог.
$ PS1=`\$PWD>`
/u/user1>
или
$ PS1=`Введите команду: `
Команда echoпозволяет проверить вам содержимое переменной – весьма удобная операция при отладке программы.
Эту команду полезно применять и без переменных, например, когда вам нужно вывести из сценария командного процессора сообщение:
$ echo «Please enter Y or N»
Другим полезным примером echoявляется передача (с помощью переназначения) в файл фиксированной строки:
$ echo `Hello, Mary!` > file1
$ cat file1
Hello, Mary!
Можно пользоваться таким приемом, когда нужно создать простой файл без текстового редактора.
«TERM» – тип терминала, необходимый некоторым программам для выполнения корректного вывода.
«MAIL» – эта переменная указывает интерпретаторуshellна файл, который служит в качестве вашего почтового файла.
«HZ» – Частота в герцах, показывающая частоту прерываний от таймера в секунду. Это значение зависит от аппаратуры, записывается в/etc/default/loginи изменять его не следует.
«SHELL» – Имя маршрута для заданного по умолчанию командного процессора. При отсутствии явного определения в последнем поле/etc/passwdпеременнаяSHEELLзадает используемый по умолчанию командный процессор.
«TZ» – Информация о временном поясе, которая используется такими командами, какdateдля вывода времени, соответствующей вашей временной зоне (включая автоматическую настройку на летнее время)
Все эти переменные устанавливаются следующим образом:
PATH=..... TERM=....... MAIL=.......
При присваивании значений переменных не допускаются пробелы рядом с символом равно =
Команда envбез аргументов будет выводить все переменные среды с их текущими значениями:
$ env
В глобальном профиле регистрации имеется строка, содержащая команду umask(user mask), которая задает значения по умолчанию для полномочий на создаваемые вами файлы и каталоги.
Начиная работу, интерпретатор shell читает и выполняет команды из файла .profile, размещенного в начальном каталоге пользователя. Его содержимое предоставляет системе UNIX информацию о вашем терминале и устанавливает вашу первичную и вторичную подсказку, последовательность поиска команды, имя вашего почтового ящика, а также выполняются те команды, которые вы считаете нужными.
