unset仅清当前终端,代理“复活”因配置文件中export语句未删;需依次检查并清理shell配置文件、/etc/apt/apt.conf、Git全局配置、GNOME系统代理及systemd用户session中的代理设置。

unset 只清当前终端,代理还会“复活”——真正要删的是配置文件里那几行 export。
为什么 unset http_proxy 后新开终端又出现了
执行 unset http_proxy 确实能清掉当前 shell 的变量,但只要 ~/.bashrc、~/.profile 或 /etc/environment 里还存着 export http_proxy="http://..." 这类语句,每次新打开终端或登录系统,shell 就会自动重载并重新设置。常见表现是:env | grep -i proxy 当前为空,但 sudo apt update 仍走代理、git clone 超时、GUI 应用(如 Firefox)网络异常。
怎么定位所有代理变量的来源
别靠猜,直接搜配置文件:
- 运行
grep -n "proxy\|PROXY" ~/.bashrc ~/.profile ~/.bash_profile /etc/environment 2>/dev/null,看哪些行定义了代理 - 检查 APT 专用配置:
cat /etc/apt/apt.conf 2>/dev/null | grep -i proxy,匹配形如Acquire::http::Proxy "http://...";的行 - 查 Git 是否被单独配置:
git config --global --get http.proxy - GNOME 用户额外检查:
gsettings list-recursively org.gnome.system.proxy | grep -i proxy
清理操作必须覆盖这五类地方
漏掉任意一类,代理就可能在某个场景下悄悄生效:
- 注释或删除 ~/.bashrc 等 shell 配置文件中含
export http_proxy、export HTTPS_PROXY、export ALL_PROXY、export no_proxy的行(注意大小写变体也要扫) - 编辑 /etc/apt/apt.conf,删掉整行
Acquire::http::Proxy "http://...";(分号不能留) - 执行
git config --global --unset http.proxy和git config --global --unset https.proxy - GNOME 用户运行
gsettings reset-recursively org.gnome.system.proxy - 最后执行
source ~/.bashrc,再开一个全新终端,用env | grep -i proxy验证是否真为空——别只信自己“记得删了”
容易被忽略的坑:systemd 用户 session 和大小写混用
有些桌面环境(尤其是较新版本 GNOME 或 Ubuntu)通过 systemd 用户 session 注入代理变量,此时 env | grep proxy 看不到,但 systemd-run --scope env | grep -i proxy 会输出。这种必须重置 GNOME 代理或手动禁用 systemd 的 proxy unit。另外,HTTP_PROXY 和 http_proxy 是两个独立变量,Linux 区分大小写,清理时得都找一遍,否则 curl 可能走一个、wget 走另一个。


















