Книга: Программирование на языке Ruby

14.4.1. Чтение и установка переменных окружения

14.4.1. Чтение и установка переменных окружения

Глобальная константа ENV — это хэш, с помощью которого можно читать и изменять переменные окружения. В примере ниже мы читаем значение переменной PATH, (в Windows вместо двоеточия нужно употреблять точку с запятой):

bypath = ENV["PATH"]
# А теперь получим массив...
dirs = mypath.split(":")

А вот пример установки переменной. Новый процесс мы создали, чтобы проиллюстрировать две вещи. Во-первых, дочерний процесс наследует переменные окружения от своего родителя. Во-вторых, значение переменной окружения, установленное в дочернем процессе, родителю не видно.

ENV["alpha"] = "123"
ENV["beta"] = "456"
puts "Родитель: alpha = #{env['alpha']}"
puts "Родитель: beta = #(env['beta']}"
fork do # Код потомка...
 x = ENV["alpha"]
 ENV["beta"] = "789"
 y = ENV["beta"]
 puts " Потомок: alpha = #{x}"
 puts " Потомок: beta  = #{y}"
end
Process.wait
a = ENV["alpha"]
b = ENV["beta"]
puts "Родитель: alpha = #{a}"
puts "Родитель: beta  = #{b}"

Программа выводит следующие строки:

Родитель: alpha = 123
Родитель: beta  = 456
 Потомок: alpha = 123
 Потомок: beta  = 789
Родитель: alpha = 123
Родитель: beta  = 456

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

Оглавление книги


Генерация: 2.185. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз