[ Содержание ]
Любая программа, работающая в Linux, имеет так называемое окружение — специальную область памяти, в которой хранятся строки вида:
ИМЯ=ЗНАЧЕНИЕ
Эти строки называются переменные среды окружения.
У каждой программы свой собственный набор переменных. Программы имеют полный доступ только к своим переменным, доступ к переменным среды окружения другой программы запрещен.
У переменных есть имена. В имени можно использовать только английские буквы, символы – и _, цифры (но не в начале имени). Большие и маленькие буквы отличаются. Имена переменных среды окружения принято писать, используя большие буквы, но Вы можете не следовать этому правилу.
Переменные среды окружения — это еще один способ управления программами. Программы имеют доступ к переменным и могут использовать значения переменных в своей работе. Например, программам, работающим в графической оболочке в Linux, можно указать X сервер, с помощью которого они будут выводить свои данные. Это можно сделать двумя способами:
- передать программе при запуске специальный параметр;
- определить переменную среды окружения DISPLAY.
Во втором случае не требуется каждой программе при ее запуске передавать параметр. Все они будут использовать содержимое переменной DISPLAY и выводить данные с помощью X сервера, указанного в этой переменной.
То, какие переменные среды окружения использует программа зависит от ее автора.
Вы как пользователь системы можете определять, изменять и удалять переменные среды окружения.
Давайте рассмотрим пример работы с переменными. Что бы добавить новую переменную в окружение программы надо написать ее имя, затем без пробелов символ = и значение переменной.
$ CAR=запорожец $
Переменные среды окружения не имеют типа и считается, что они содержат строку. Если в строке встречаются пробелы, значение переменной берут в двойные кавычки.
$ CAR="запорожец - это машина?" $
Для того, что бы получить значение переменной, перед ее именем необходимо поставить символ $. Вместо $CAR, шелл подставит значение переменной CAR.
Используйте программу echo если вы хотите увидеть значение переменной. Echo выводит на стандартный вывод все, что вы передадите ей в командной строке. Например, что бы посмотреть содержимое переменной CAR следует выполнить следующую команду:
$ echo $CAR запорожец - это машина? $
Содержимое переменной было выведено на экран в следующей строке.
В то же время:
$ echo CAR CAR $
Предположим, что мы присвоили переменной CAR значение bmw. И запустили еще одну оболочку — sh.
$ CAR=bmw $ sh $
Внешний вид командной строки не изменится, но вы будете работать совсем в другой программе, имеющей свой собственный набор переменных среды окружения. И если теперь посмотреть содержимое переменной CAR на экран ничего выведено не будет, так как в окружении программы sh переменной CAR не существует.
$ echo $CAR $
В UNIX есть возможность заранее определить переменные, которые будут помещены в окружение программы при ее запуске. Ниже приведен пример того, что необходимо сделать, что бы переменная CAR была доступна программе sh.
$ CAR=bmw $ export CAR $ sh $ echo $CAR bmw $
Переменную нужно экспортировать при помощи оператора export. Только экспортированные переменные будут видны в программах-потомках. То есть во всех программах, которые будут запущены из программы, где переменная была определена. Эта переменная будет автоматически определяться только у программ потомков и только у них. На остальные программы, работающие в системе, операция экспорта не повлияет.
После входа пользователя в систему у пользователя существует большое количество заранее определенных переменных среды окружения. Их список можно посмотреть при помощи команды set. Некоторые из них определяются самой оболочкой, а некоторые определены в специальных конфигурационных файлах. Вы можете самостоятельно определять новые переменные или изменять старые.
Существует набор файлов, которые выполняются при входе пользователя в систему (обычно в Linux — это файлы, находящиеся в директории /etc/profile.d. Но могут применяться и другие файлы, это зависит от используемой программы оболочки.). Именно в этих файлах можно осуществить добавление или переопределение переменных среды окружения. Если говорить о конкретном пользователе, то используют файл ~/.bash_profile или ~/.profile (символ тильда обозначает домашнюю директорию текущего пользователя).
Для изменения содержимого переменной следует просто присвоить ей новое значение. Например, необходимо в переменную PATH добавить директорию ~/bin. Для этого можно отредактировать файл .bash_profile и добавить в него следующую строку:
export PATH=$PATH:~/bin
Для удаления переменной используется команда unset. Например:
$ unset CAR $ echo $CAR $
[ Содержание ]