Usar un proxy distinto para un solo comando de shell
Anteponga variables de proxy a un comando cuando quiera una ruta temporal sin cambiar el shell padre ni editar archivos de inicio.
Quiere que una descarga use un proxy distinto y que después todo vuelva a la normalidad. No hace falta editar el archivo de inicio del shell y confiar en acordarse de deshacerlo.
Para un comando externo en un shell de estilo POSIX, ponga la asignación antes del comando:
https_proxy=http://proxy.example:8080 curl https://example.com/
Use el punto de conexión HTTP previsto para esa descarga; la lista de proxies HTTP ofrece candidatos para rutas públicas permitidas. La asignación se entrega al entorno de ese comando. Sus procesos hijos pueden heredar el valor, pero la asignación no sustituye el valor existente del shell padre cuando el comando termina.
El cliente sigue decidiendo qué leer
La sintaxis del shell crea un entorno; no impone una ruta de red. Use los nombres de variable que admite la aplicación. Las variables de omisión existentes, las opciones explícitas del comando o la configuración propia de la aplicación aún pueden afectar el resultado.
La documentación del entorno de Bash explica el comportamiento del prefijo de comando. Los comandos que son funciones del shell, órdenes internas especiales o sintaxis del shell pueden tener reglas de alcance adicionales, por eso el ejemplo simple anterior usa deliberadamente un programa externo.
Para varios comandos, use un subshell
(
export http_proxy=http://proxy.example:8080
export https_proxy=http://proxy.example:8080
command-one
command-two
)
El grupo entre paréntesis se ejecuta con su propio entorno de shell. Sustituya los nombres de comando ilustrativos por los programas que pretende ejecutar. Este patrón evita la secuencia frágil de guardar un valor antiguo, sobrescribirlo y restaurarlo a mano después de cada posible fallo.
Mantenga los secretos fuera de los ejemplos copiados al historial del shell. Recuerde también que sudo puede filtrar el entorno; una variable visible para el comando externo no se transmite automáticamente a través de cada límite de privilegios. El alcance temporal y la selección real del proxy siguen siendo cuestiones separadas.