![](/user_photo/2706_HbeT2.jpg)
- •И.Н.Акуленок
- •Утверждено советом университета
- •Введение
- •Глава 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 информацию о вашем терминале и устанавливает вашу первичную и вторичную подсказку, последовательность поиска команды, имя вашего почтового ящика, а также выполняются те команды, которые вы считаете нужными.