
KTNI_Kozlov_otvety / 24
.docx24. Переменные окружения и псевдонимы.
В OC Linux имеется возможность настройки сеанса пользователя (аккаунта) с помощью переменных окружения и псевдонимов.
Переменной окружения называется имя, которое ссылается на определенную область памяти, где временно хранятся данные. Назначение новых переменных осуществляется путем присваивания имени переменной ее значения. В зависимости от типа командного интерпретатора способ задания переменных окружения может отличаться.
Например, в интерпретаторе BASH синтаксическое правило назначения переменной выглядит следующим образом:
имя_переменной=значение_переменной.
Чтобы отобразить все заданные в памяти переменные, требуется ввести команду env. Отобразим часть переменных окружения:
LANG=ru_RU.UTF-S
LM_LICENSE_FILE=7326@82.179.185.68
ISEDB=/home/antonk/DBte st/
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
EOME=/home/antonk
3HLVL=2
LOGNAME=antonk
CVS_RSH=ssh
QTLIB=/usr/lib64/qt-3.3/lit
SSH_CONNECTION=82.179.185.70 1209 82.179.185.125 22 LESSOPEN=|/usr/bin/lesspipe.sh %s
ISEROOT=/syn/SYNOPSYS/TCAD61
STROOT_LIB=/root/STDB
STDB=/root/STDB
G_BROKEN FILENAMES=1
В операциях перенаправления также используется переменная окружения, которая в зависимости от значения может позволить или не позволить перезаписать уже существующий файл. Имя переменной – noclobber. Она относится к числу служебных переменных, которые задаются с помощью команды set.
В следующем примере создадим новый файл «rrr», с помощью переменной noclobber установим запрет на перезапись файла средствами перенаправления и попробуем стандартный вывод расширенного действия выполнения команды ls записать в вновь созданный файл «rrr». Перезапись не разрешена. Далее с помощью переменной noclobber разрешим перезапись уже существующего файла «rrr» и посмотрим его содержимое.
[antonk@lab4236s ~]$ cat > rrr
1223333
[antonk@lab4236s ~]$ cat rrr
1223333
[antonk@lab4236s ~]$ set -o noclobber
[antonk@lab4236s ~]$ ls -ld /home/antonk > rrr
bash: rrr: cannot overwrite existing file
[antonk@lab4236s ~]$ set +o noclobber
[antonk@lab4236s ~]$ ls -ld /home/antonk > rrr
[antonk@lab4236s ~]$ cat rrr
drwx------ 27 antonk antonk 4096 Sep 22 11:53 /home/antonk
[antonk@lab4236s ~]$
Перечень служебных переменных можно отобразить с помощью команды set –o. Часть вывода служебных переменных приведена ниже:
[antonk@lab4236s ~]$ set –o
allexport off
braceexpand on
arrexit off
arrtrace off
functrace off
hashall on
histexpand on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
Переменные окружения называют цифрами и латинскими буквами в верхнем регистре. Важно, чтобы название переменной начиналось именно с латинской буквы. Отображение значения переменной осуществляется с помощью команды echo $имя_переменной, где символ $ указывает на то, что речь идет не о самой переменной, а о ее значении.
В следующем примере создадим переменную MY_VAR и присвоим ей значение 5. Затем убедимся, что такая переменная действительно существует, и возвратим ее значение:
[antonk@lab4236s ~]$ MY_VAR=5
[antonk@lab4236s ~]$ set | grep MY_VAR
MY_VAR=5
[antonk@lab4236s ~]$ echo $MY_VAR
5
[antonk@lab4236s ~]$
В отдельных случаях удобно использовать так называемые псевдонимы. Псевдонимы (aliases) – сокращенные имена, заменяющие одну или несколько команд, которые также могут содержать опции и параметры. Формат команды: alias dir=строка_команды.
Например, установим псевдоним на команду ls с опциями –ld для папки /home/antonk и назовем его lh:
[antonk@lab4236s ~]$ alias lh='ls -ld /home/antonk'
[antonk@lab4236s ~]$ lh
drwx--------- 27 antonk antonk 4096 Sep 22 14:22 /home/antonk
[antonk@lab4236s ~]$
Теперь по команде lh будет отрабатываться комбинация ls –ld /home/antonk . Следует отметить, что длинные выражения с правой стороны от равенства, включающие пробелы, знаки табуляции или другие спецсимволы, ограничиваются одиночными апострофами. Вновь созданные переменные окружения и псевдонимы действуют в течение текущего сеанса и по завершении сеанса командного интерпретатора стираются из памяти. Для того чтобы в новом сеансе они вновь работали, их можно занести в точечный файл rc-скрипта BASH-интерпретатора – в файл .bashrc .