You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bash -c场景中仅设置一次HTTPS_PROXY满足双重代理需求?

在安装脚本中仅设置一次HTTPS_PROXY的方法

问题背景

我需要在安装脚本中配置HTTP代理,初始写法如下:

HTTPS_PROXY="http://1.2.3.4:4321" bash -c "$(curl -L https://my.script.com/install.sh)"

但存在两个必须满足的需求,原写法无法兼顾:

  • 下载得到的install.sh需要$HTTPS_PROXY环境变量来拉取二进制文件;
  • 命令替换中的curl也需要走代理,但它无法读取bash -c之前设置的环境变量,因此只能重复设置HTTPS_PROXY或使用curl的-x参数:
HTTPS_PROXY="http://1.2.3.4:4321" bash -c "$(HTTPS_PROXY=http://1.2.3.4:4321 curl -L https://my.script.com/install.sh)"

# 或者使用curl的-x参数指定代理
HTTPS_PROXY="http://1.2.3.4:4321" bash -c "$(curl -x http://1.2.3.4:4321 -L https://my.script.com/install.sh)"

我希望找到仅设置一次HTTPS_PROXY的实现方式,当前使用的bash版本为:

$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

可行方案

我提出一种仅需设置一次代理的写法,可在不同bash版本下验证:

HTTPS_PROXY="http://1.2.2.3:4321" bash -c "curl -L https://my.script.com/install.sh | bash"

方案原理

  • 外层设置的HTTPS_PROXY会被传递给bash -c启动的子shell,子shell中的curl可以直接读取该环境变量,无需额外配置;
  • curl下载的install.sh通过管道交给后续的bash进程执行,这个bash会继承子shell的HTTPS_PROXY环境变量,满足install.sh拉取二进制文件时的代理需求。

内容的提问来源于stack exchange,提问作者coanor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:53:30