Организация UNIX-систем и ОС Solaris

Переменные среды окружения


Как отмечалось в лекции 7, каждый процесс имеет свою среду окружения - специальную область, в которой хранятся имена переменных и их значения. Если нужно использовать значение переменной в командной строке, применяется конструкция

$имя_переменной

Например, echo $TERM выведет на экран значение переменной TERM. Пользователь может определить свои собственные переменные. Новая переменная появляется, как только вы даете команду присвоить значение несуществующей переменной. Переменная не имеет типа, так как считается, что все переменные имеют тип "строка". При этом если попытаться выполнить арифметическую операцию с переменными, имеющими значение неких чисел, то такая строка будет преобразована в число, число использовано в операции и результат преобразован обратно в строку.

Попробуйте:

i=2 j=3 expr $i \* $j

Присвоение переменной значения во всех командных процессорах, кроме csh, выполняется командой

VAR=value

В csh команда иная:

set VAR=value

или

setenv VAR value

Переменные со специальными названиями типа DISPLAY, TERMINFO и т.п. используют программы, которые проверяют свою среду окружения на наличие таких переменных и их значений. Поведение таких программ может изменяться в зависимости от значения переменных.

Переменные могут экспортироваться, т.е. передаваться от процессов-родителей процессам-потомкам. Для экспорта переменной надо дать команду

export имя_переменной

Если надо удалить переменную среды окружения, можно присвоить ей пустое значение (это неравнозначно удалению, но иногда этого достаточно), а можно удалить ее вовсе командой unset.

В tsch есть возможность создавать переменные только для чтения, без права изменения значений, для этого служит команда

set -r имя=значение

Кроме того, в tcsh можно присвоить переменной значение в виде списка слов, к которым потом можно обращаться по номеру слова, начиная с 1:

set var=(hello world) echo {$var[1]} hello echo {$var[2]} world

Для вывода на экран списка всех переменных с их значениями надо дать команду set без параметров.



Содержание раздела