23.10.2009, 22:40
общий
это ответ
Здравствуйте, Gerhard.
Переменные окружения - это основное средство для хранения различных настроек, задаваемых и системой и пользвателем. По форме - это обычные переменные, которые задаются как и в любой другой программе, по сути - некие "мини-хранилища" данных, которые Вы потом можете использовать во всех скриптах и программах, написанных на любом языке. Переменная окружения инициализируется в момент запуска процесса оболочки /bin/bash (в Вашей системе пуь может отличаться) из файла ~.bashrc (или ~.shrc) и существует в течение всего времени, пока данная копия оболочки не завершит работу. Выделенный момент очень важен - если Вы создаете переменную окружения, а потом закрываете оболочку, переменная исчезает. Ее также можно задать вручную непосредственно в самом скрипте. Любая программа, запущенная в данной копии оболочки, может получить доступ к переменным окружения, существовавшим в тот момент, когда данная программа была запущена. Основное назначение переменных окружения - передавать некоторую информацию в те программы, которые будут в данной оболочке впоследствие запускаться.
Имя переменной окружения выбирается произвольно, оно может состоять из символов латиницы и знака подчеркивания. Общепринято в тексте программ, скриптов и документации писать имена переменных окружения БОЛЬШИМИ буквами, при этом как такового ограничения на длину нет, например: PKG_CONFIG_DISABLE_UNINSTALLED. Значение переменной окружения задается в текстовом виде, Вы не можете передавать двоичные значения. Как такового ограничения или какого-либо форматирования не предусмотрено - все, что будет указано после знака равенства - все будет установлено в качестве значения и передано в запросившую программу, например:
PKG_CONFIG_PATH=/usr/X11R6/libdata/pkgconfig:/usr/X11R6/qt33/libdata/pkgconfig:/usr/local/kde3/libdata/pkgconfig
Разбор значения переменной окружения - прерогатива программиста. Наиболее известное применение переменной окружения - это получение информации о том, где оболочка может искать запускаемый файл. Если Вы вводите просто имя файла команды, не предваряя его полным путем, то оболочка обращается к заранее оговоренной переменной окружения (как правило это переменная PATH), в которой заранее перечислены все пути, где данная команда может находиться. Если ни в одном из этих мест команда не была найдена, Вы увидите сообщение о том, что команда не найдена. Скорее всего именно путь к каталогу, где будет установлен Ваш компилятор - и нужно прописать в переменную PATH. Все переменные окружения, используемые самой оболочкой, как правило перечислены в мануале, их достаточно много, некоторые используются очень часто, некоторые крайне редко.
Для того, чтобы переменная окружения не исчезала при завершении работы командной оболочки, ее можно "экспортировать", то есть с помощью специальной команды (в /bin/bash это export) передать в оболочку более высокого уровня (ту, что запустила работающую в данный момент оболочку). Как правило, все переменные окружения, задаваемые в .bashrc экспортируются, потому что иначе они исчезнут сразу же после того, как оболочка дочитает (а по сути - закончит выполнять) файл .bashrc
Что прописывать и где прописывать. Как правило, что прописывать и в каком формате это "что" должно быть - указывается в документации к программе. Если документации нет, а достоверно известно, что переменные окружения используются - можно посмотреть код программы, если он доступен, на предмет наличия вызовов функции типа getenv() . Прописывается же переменная окружения или непосредственно в скрипте перед запуском программы, например при запуске с помощью команды env, если таковая имеется в Вашей системе - env TESTVAR=testvalue /usr/bin/myprogram. В результате программа myprogram при запуске получит окружение, в которое будет вставлена переменная TESTVAR со значением testvalue. Можно также создать небольшой скриптик, состоящий только из строк задания переменной окружения и запуска программы. Такие способы очень хороши для отладки, когда требуется придавать различным переменным окружения разнообразные произвольные значения. Для постоянного задания переменной окружения ее следует включить в файл, который читается при запуске оболочки (.bashrc для /bin/bash, при его отсутствии может читаться .shrc и/или .profile, подробности уточняйте в руководстве по оболочке) и обязательно экспортировать ее.
5
Спасибо за столь подробное описание!