Un comando con acento invertido que contiene export solo cambia el shell creado para ese comando. Cuando el shell termina, el proceso Perl padre conserva su entorno anterior.

Defina en su lugar el hash de entorno de Perl. local puede mantener el cambio dentro de un bloque:

{
    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;
}

El hijo hereda los valores localizados. Para una descarga HTTP pública, un extremo de la lista de proxies HTTP puede proporcionar esos valores de URL. Cuando el bloque termina, Perl restaura las entradas anteriores, incluida su ausencia previa. El resultado de system que se muestra es el estado del proceso de Perl, no un código de respuesta HTTP decodificado.

local tiene ámbito dinámico: otro código Perl llamado dentro de ese bloque también ve el entorno temporal. No es un almacén privado de credenciales por función.

Revise las variables heredadas en mayúsculas y de omisión para el cliente elegido. Es el descargador quien decide qué entradas consume. Un ajuste de proxy tampoco cambia la identidad de usuario del proceso ni exige un shell root aparte solo para ser heredado.

Artículos relacionados