Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Ввод и вывод / Запуск внешних программ 🆕
Переменные окружения
Всякая программа запускается с набором переменных окружения
— именованных значений вроде HOME, PATH или
USER, которые предоставляет операционная система. В Raku
они доступны в динамическом хеше %*ENV:
say %*ENV<HOME>; # домашний каталог, например /home/annaПеременную окружения читают, обращаясь к %*ENV по её
имени. Поскольку это обычный хеш, можно также проверить, задана ли
переменная, или изменить её для программ, которые вы запускаете:
%*ENV<GREETING> = 'Hello';
say %*ENV<GREETING>; # HelloУстановка ключа в %*ENV добавляет его в окружение,
которое унаследует любая программа, запущенная затем через
run или shell, — так конфигурацию передают
дочерней программе:
%*ENV<GREETING> = 'Hello';
my $proc = run 'sh', '-c', 'echo $GREETING', :out;
say $proc.out.slurp(:close).chomp; # HelloПеременная устанавливается в окружении вашей программы до
запуска потомка, поэтому оболочка, которую стартует run,
уже имеет GREETING в собственном окружении и может его
вывести. Любая установленная так переменная достаётся каждой программе,
запущенной впоследствии.
Твигил * говорит о том, что %*ENV —
динамическая переменная, как и $*OUT из части о вводе и
выводе. Ещё несколько переменных со звёздочкой описывают мир работающей
программы: @*ARGS содержит аргументы командной строки, а
$*PROGRAM-NAME — имя самого скрипта. Вместе они позволяют
программе понять, в каком контексте её запустили.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Тест — Объект Proc | Тест — Переменные окружения →
💪 Или перейдите сразу к упражнениям этого
раздела.