Linux终端HTTP代理配置需分三类场景:临时设置用export命令仅当前终端生效;用户级永久配置写入~/.bashrc或~/.zshrc并source生效;系统级全局生效须修改/etc/environment(无export、值加引号),且apt等工具需单独配置。

要在Linux终端命令行中配置HTTP代理上网,必须明确区分临时调试、用户级持久化、系统级全局生效这三种场景——设错位置会导致curl走代理而apt直连失败,或git clone超时却查不出原因。
临时设置:只对当前终端有效,适合验证代理连通性
在终端中直接运行以下两条命令(注意https_proxy必须用http://开头,不是https://):
export http_proxy=http://192.168.1.100:8080
export https_proxy=http://192.168.1.100:8080
如果代理需要认证,用户名为user、密码为pass@123,则必须将@编码为%40:
export http_proxy=http://user:pass%40123@192.168.1.100:8080
不URL编码会导致shell把@误认为地址分隔符,实际连接时用户名被截断成user:pass,认证必然失败。
验证是否真走代理:运行curl -v https://httpbin.org/ip,查看返回中是否有“Connected to 192.168.1.100 via proxy”字样——仅返回网页内容不算成功,必须看到via proxy才确认流量已转发。
用户级永久配置:每次新开终端自动生效,但systemd/cron/GUI应用不读取
方法一:修改~/.bashrc(适用于bash用户)
用nano打开配置文件:nano ~/.bashrc
滚动到底部,新增三行(注意no_proxy必须包含localhost和127.0.0.1,否则本地开发服务请求会被错误转发):
export http_proxy="http://192.168.1.100:8080"
export https_proxy="http://192.168.1.100:8080"
export NO_PROXY="localhost,127.0.0.1,192.168.1.0/24"
保存后执行source ~/.bashrc立即生效。这一步操作起来很简单,直接把文件拖进去就行。
方法二:改~/.zshrc(适用于zsh用户,如Oh My Zsh)
命令是nano ~/.zshrc,其余步骤与方法一完全相同,只是文件名不同。
系统级全局生效:让apt、wget、systemd服务等全部认代理
第一步:编辑/etc/environment
运行sudo nano /etc/environment,删除所有export关键字,只写纯变量赋值,且值必须用双引号包裹:
http_proxy="http://192.168.1.100:8080"
https_proxy="http://192.168.1.100:8080"
NO_PROXY="localhost,127.0.0.1,10.0.0.0/8"
【NO_PROXY不支持CIDR写法,10.0.0.0/8会失效,必须写成10.*,10.0.*,10.0.0.*】
第二步:重启或重新登录图形界面
该文件不依赖shell解析,所有进程启动时都会读取,包括apt update、systemd定时任务、GNOME Terminal新窗口。
第三步:单独验证apt是否真走代理
运行sudo apt update -o Debug::Acquire::http=true 2>&1 | grep "Connecting to",输出中必须出现“Connecting to 192.168.1.100”,而非“Connecting to archive.ubuntu.com”才算配置成功。
特殊工具单独配置:apt、git、wget不继承环境变量时的补救
apt专用配置(Debian/Ubuntu):
运行sudo tee /etc/apt/apt.conf.d/80proxy Acquire::http::Proxy "http://192.168.1.100:8080";
EOF
注意末尾英文分号不能丢,漏掉则整个配置被忽略。
git强制走代理:
git config --global http.proxy http://192.168.1.100:8080
git config --global https.proxy http://192.168.1.100:8080
wget检查是否被禁用:
运行grep -E "^(use_proxy|http_proxy)" /etc/wgetrc,若输出中含use_proxy = off或http_proxy = off,需用sudo nano /etc/wgetrc将其注释掉。


















