Detský shell nemôže exportovať proxy späť do Perlu
Nastavte ENV Perlu priamo a ohraničte proxy premenné pomocou local okolo jedného volania potomka, aby sa pôvodné hodnoty potom vrátili.
Príkaz s backtickom obsahujúci export mení len shell vytvorený pre tento príkaz. Keď shell skončí, nadradený proces Perlu má stále svoje predchádzajúce prostredie.
Namiesto toho nastavte hash prostredia Perlu. local udrží zmenu v rámci jedného bloku:
{
local $ENV{http_proxy} = 'http://proxy.example:8080';
local $ENV{https_proxy} = 'http://proxy.example:8080';
my $status = system {
'/usr/bin/curl'
} '/usr/bin/curl', '--fail', '--max-time', '30',
'https://downloads.example/data.csv';
die "Downloader failed: $status" if $status != 0;
}
Potomok dedí lokalizované hodnoty. Pre verejné sťahovanie cez HTTP môže koncový bod zo zoznamu HTTP proxy poskytnúť tieto hodnoty URL. Keď blok skončí, Perl obnoví predchádzajúce položky vrátane ich predchádzajúcej neprítomnosti. Zobrazený výsledok system je stav procesu Perlu, nie dekódovaný kód odpovede HTTP.
local má dynamický rozsah: iný kód Perlu volaný v tomto bloku tiež vidí dočasné prostredie. Nie je to súkromné úložisko prihlasovacích údajov pre jednotlivé funkcie.
Skontrolujte zdedené premenné veľkými písmenami a premenné obchádzania pre zvoleného klienta. Ktoré vstupy použije, rozhoduje sťahovač. Nastavenie proxy tiež nemení identitu používateľa procesu ani nevyžaduje samostatný root shell len preto, aby sa zdedilo.