Курс 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   |   Тест — Змінні оточення


💪 Або перейдіть одразу до вправ цього розділу.