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

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

Для получения значения переменной окружения приложение должно вызвать getenv функция, которая является частью стандартной системной библиотеки (stdlib.h). Вы передаете эту функцию строка, содержащая имя переменной, которую Вы хотите, и это возвращает значение или NULL, если не была найдена никакая переменная того имени. Ваше приложение может тогда использовать переменную, как это считает целесообразным.

Объем переменной окружения

Переменные окружения ограничены по объему к процессу, создавшему их и любым дочерним элементам того процесса. Терминальное приложение обрабатывает каждое окно как свой собственный отдельный процесс ради управления переменными окружения. Таким образом, если Вы создаете Окно терминала и определяете некоторые переменные окружения, любые программы, которые Вы выполняете из того окна, наследовали те переменные. Однако Вы не можете получить доступ к переменным, определенным в первом окне из второго Окна терминала, и наоборот.

Сеансы могут быть наследованы. Например, когда пользователь входит в систему, система создает сеанс пользователя и определяет стандартный набор переменных окружения. Любые процессы, запущенные пользователем во время сеанса, наследовали переменные пользовательской среды. Однако это наследование является отношением только для чтения. Любые изменения, внесенные в переменную процессом, остаются локальными для того процесса и не наследованы другими процессами.

Переменные окружения сеанса пользователя

OS X поддерживает определение переменных окружения в пределах текущего сеанса пользователя. На входе в систему loginwindow приложение ищет специальный файл списка свойств с именем environment.plist. Этот файл должен быть расположен в вызванном каталоге .MacOSX в корне корневого каталога пользователя. Путь к этому файлу (который необходимо создать) следующие:

~/.MacOSX/environment.plist

Если environment.plist файл существует, loginwindow ищет ключи, которые являются дочерними элементами корневого элемента. Для каждого из этих ключей loginwindow регистрирует переменную окружения того же имени и присваивает его значение ключа. Этот файл поддерживает только определение переменных окружения. Вы не можете использовать этот файл для выполнения других форм кода сценария. Формат файла является тем же форматом XML как другие файлы списка свойств с каждым ключом в файле, содержащем строковое значение. Например, в Редакторе Списка свойств приложение (расположенный в <Xcode>/Applications/Utilities, где <Xcode> Ваш каталог установки XCode), такой файл списка свойств мог бы быть похожим на следующее:

Art/environment_plist.gif

Специализированные переменные окружения

Существует два способа сделать переменные окружения доступными для приложения. Первое должно определить переменные в Терминальный сеанс и затем запустить приложение от того же сеанса. Когда запущено от Терминала, приложение наследовало настройки сеанса, включая любые переменные окружения, определенные там.

Второй способ связать переменные окружения с приложением состоит в том, чтобы включать LSEnvironment введите информационный файл списка свойств приложения. LSEnvironment ключ позволяет Вам указать произвольное число пар ключ/значение, представляющих переменные окружения и их значения. Поскольку это требует изменения информационного файла списка свойств приложения, использование этого ключа является лучшим для опций, не изменяющихся слишком часто. Для получения дополнительной информации об использовании этого ключа посмотрите информационную Ключевую Ссылку Списка свойств.