Предопределенные переменные содержатся в среде окружения командного процессора независимо от установок, которые может сделать пользователь в стартовых файлах. Имена предопределенных переменных среды окружения во всех командных процессорах, кроме csh (и, в некоторых случаях, tcsh) пишутся символами верхнего регистра: PATH, USER, TERM, PS1, PS2.
В любых командных процессорах заранее определены переменные, перечисленные в табл.2.2.
Таблица 2.2
Перечень системных переменных
Переменная
Смысл
HOME
Домашний каталог пользователя
SHELL
Текущий shell
PS1
Вид приглашения shell'a
PS2
Вид приглашения "продолжение команды"
TERM
Тип терминала пользователя
USER или LOGNAME
Имя пользователя
PATH
Список каталогов, где надо искать программы, когда пользователь запускает программу, указывая только ее имя, но не путь. Каталоги разделяются двоеточиями
1. «HOME» – имя начального каталога. При выполнении команды cd без аргумента интерпретатор shell всегда автоматически возвращает вас в начальный каталог.
2. «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 домашнего каталога.
3. «IFS» – внутренние разделители полей, которыми обычно служат пробелы, табуляции и символы новой строки. Внутренние разделители полей разделяют слова в команде.
4. «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!
Можно пользоваться таким приемом, когда нужно создать простой файл без текстового редактора.
5. «TERM» – тип терминала, необходимый некоторым программам для выполнения корректного вывода.
6. «MAIL» – эта переменная указывает интерпретатору shell на файл, который служит в качестве вашего почтового файла.
7. «HZ» – Частота в герцах, показывающая частоту прерываний от таймера в секунду. Это значение зависит от аппаратуры, записывается в /etc/default/login и изменять его не следует.
8. «SHELL» – Имя маршрута для заданного по умолчанию командного процессора. При отсутствии явного определения в последнем поле /etc/passwd переменная SHEELL задает используемый по умолчанию командный процессор.
9. «TZ» – Информация о временном поясе, которая используется такими командами, как date для вывода времени, соответствующей вашей временной зоне (включая автоматическую настройку на летнее время)
Все эти переменные устанавливаются следующим образом:
PATH=..... TERM=....... MAIL=.......
При присваивании значений переменных не допускаются пробелы рядом с символом равно =
Команда env без аргументов будет выводить все переменные среды с их текущими значениями:
$ env
В глобальном профиле регистрации имеется строка, содержащая команду umask (user mask), которая задает значения по умолчанию для полномочий на создаваемые вами файлы и каталоги.
Начиная работу, интерпретатор shell читает и выполняет команды из файла .profile, размещенного в начальном каталоге пользователя. Его содержимое предоставляет системе UNIX информацию о вашем терминале и устанавливает вашу первичную и вторичную подсказку, последовательность поиска команды, имя вашего почтового ящика, а также выполняются те команды, которые вы считаете нужными.