Dětský shell nemůže exportovat proxy zpět do Perlu
Nastavte ENV Perlu přímo a ohraničte proxy proměnné pomocí local okolo jednoho volání potomka, aby se původní hodnoty poté vrátily.
Příkaz s backtickem obsahující export mění jen shell vytvořený pro tento příkaz. Když shell skončí, nadřazený proces Perlu má stále své předchozí prostředí.
Nastavte místo toho hash prostředí Perlu. local udrží změnu v rámci jednoho 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;
}
Potomek dědí lokalizované hodnoty. Pro veřejné stahování přes HTTP může koncový bod z seznamu HTTP proxy dodat tyto hodnoty URL. Když blok skončí, Perl obnoví předchozí položky včetně jejich dřívější nepřítomnosti. Zobrazený výsledek system je stav procesu Perlu, nikoli dekódovaný kód odpovědi HTTP.
local má dynamický rozsah: jiný kód Perlu volaný uvnitř tohoto bloku také vidí dočasné prostředí. Není to soukromé úložiště přihlašovacích údajů pro jednotlivé funkce.
Zkontrolujte zděděné proměnné velkými písmeny a proměnné obejití pro zvoleného klienta. Které vstupy použije, rozhoduje stahovač. Nastavení proxy také nemění identitu uživatele procesu ani nevyžaduje samostatný root shell jen proto, aby se zdědilo.