Курс 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 | Тест — Змінні оточення →
💪 Або перейдіть одразу до вправ цього
розділу.