Linux и UNIX: программирование в shell. Руководство разработчика
Шрифт:
14.3.1. Присваивание значений переменным среды
Для присваивания значений переменным среды применяется команда:
VARIABLE_NAME=значение; export VARIABLE_NAME
Точка с запятой между двумя командами выступает в роли разделителя команд. К аналогичному результату можно прийти следующим образом:
VARIABLE_NAME = значение export VARIABLE_NAME
14.3.2. Отображение значений переменных среды
Отображение значений переменных среды выполняется так же, как и в случае с переменными интерпретатора shell. Ниже приведено несколько примеров.
$ CONSOLE=tty1; export CONSOLE
$ echo $CONSOLE
tty1
$ MYAPPS=/usr/local/application; export MYAPPS
$ echo $MYAPPS /usr/local/application
Чтобы просмотреть глобально определенные переменные среды, достаточно воспользоваться командой env.
$ env
HISTSIZE=1000
HOSTNAME=localhost.localdomain
LOGNAME=dave
MAIL=/var/spool/mail/root
TERM=vt100
HOSTTYPE=i386
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/XllR6/bin:/root/bin:
CONSOLE=tty1
HOME=/home/dave
ASD=sdf
SHELL=/bin/sh
P$1=$
USER=dave
14.3.3. Удаление значений переменных среды
Чтобы удалить значение переменной, следует применить команду unset.
$ unset MYAPPS $ echo $MYAPPS
$
14.3.4. Встроенные переменные интерпретатора shell
Интерпретатор Bourne shell располагает именами, которые зарезервированы для переменных среды. Эти названия переменных нельзя использовать иначе. Обычно они содержатся в файле /etc/profile. Однако так бывает не всегда, поэтому пользователь может самостоятельно устанавливать значения этих переменных. Ниже приводится перечень переменных, встроенных в интерпретатор shell.
Переменная CDPATH
Переменная определяет выбор альтернативных каталогов, поэтому содержит ряд имен путей, разделенных двоеточием. Эта переменная применяется совместно с командой cd. Если значение переменной CDPATH установлено на момент выполнения команды cd, оно используется для выбора нового рабочего каталога. Если нужный каталог найден, он становится новым рабочим каталогом. Ниже приводится соответствующий пример,
$ CDPATH=/home/dave/bin:/usr/local/apps; export CDPATH
Теперь, обратим внимание на следующую команду:
$ cd apps
Команда cd будет выполнять поиск среди каталогов, заданных с помощью переменной CDPATH. Если нужный каталог найден, именно он становится текущим рабочим каталогом.
Переменная EXINIT
При работе с редактором vi переменная EXINIT предоставляет опции для инициализации этого редактора. Например, для установки нумерации всех строк и шага табуляции, равного 10 пробелам, примените следующую команду:
$ EXINIT=='set nu tab=10'; export EXINIT
Переменная HOME
Каталог HOME обычно указывается в файле passwd, во втором поле от конца файла. Именно в этом каталоге хранятся все персональные файлы пользователя. Если переменная установлена, для перехода в каталог НОМЕ можно воспользоваться клавишей быстрого доступа, соответствующей команде cd.
$ HOME=/home/dave; export HOME
$ pwd
$ /usr/local
$ cd
$ pwd
$ /home/dave
Можно также применить команду:
$ cd $НОНЕ
Переменная IFS
Переменная ifs применяется интерпретатором команд в качестве заданного по умолчанию разделителя полей. Внутренний разделитель полей может устанавливаться произвольным образом. По умолчанию разделителем полей служит пробел, символ новой строки или символ табуляции. Переменную ifs удобно использовать при разделении полей в файлах или переменных. Путь, включающий множество каталогов, более удобен для просмотра, если назначить переменной ifs двоеточие и вывести на экран значение переменной path.
$ export IFS=:
$ echo $PATH
/sbin /bin /usr/sbin /usr/bin /usr/X11R6/bin /root/bin
Чтобы вернуться к исходным установкам, достаточно применить следующую команду:
$ IFS=<space><tab>; export IFS
где значения <space><tab> задают использование в качестве разделителей полей символов пробела и табуляции.
Переменная LOGNAME
Переменная содержит регистрационное имя пользователя. Значение этой переменной устанавливается по умолчанию. Если этого не случилось, значение можно присвоить с помощью команды
$ LOGNAME=`whoami` ; export LOGNAME
$ echo $LOGNAME
dave
Переменная MAIL
Переменная mail хранит имя пути доступа и имя файла для вашего почтового ящика. По умолчанию ее значение /var/spool/mail/<регистрационное имя>. Интерпретатор shell периодически проверяет почтовый ящик на предмет наличия новых сообщений. Если пользователь получает электронное сообщение, он узнает об этом из командной строки. Если к почтовому ящику имеется другой путь, установите его с помощью переменной mail:
$ MAIL=/usr/mail/dave; export MAIL
Переменная MAILCHECK
Значение переменной mailcheck задается по умолчанию таким образом, чтобы наличие новой электронной почты проверялось каждые 60 секунд. Если электронную почту следует запрашивать реже, допустим каждые 2 минуты, примените команду:
$ MAILCHECK=120; export MAILCHECK
Переменная MAILPATH
Применяйте переменную mailpath, если вы располагаете более чем одним почтовым ящиком. При установке значения этой переменной перекрывается значение переменной mail:
$ MAILPATH=/var/apool/dave:/var/epool/admin; export MAILPATH
В данном примере переменная mail проверяет два почтовых ящика — dave и admin.
Переменная PATH
Переменная path хранит сведения о каталогах, где находятся выполняемые команды или сценарии. Важно, чтобы эта последовательность указывалась правильно, поскольку при обращении к этой переменной существенно сокращается время выполнения команды или сценария. Например, если в каком-либо каталоге нет заданной команды, то не следует его просматривать. В общем случае лучше сначала задать каталог НОМЕ, за которым будет следовать перечень каталогов. Перечень включает каталоги, отсортированные по частоте применения. Сначала указываются наиболее часто применяемые каталоги, а затем те из них, которые применяются реже всего. Если нужно найти текущий рабочий каталог, то независимо от места его нахождения используйте точку. Каждый каталог отделяется двоеточием. Рассмотрим пример.