zsh或者bash用户目录下面的.zshrc和.bashrc文件开启代理后取消问题
.zshrc 中的环境变量只在 交互式 zsh 会话 中生效,而 apt-get 通常是在 非交互式 shell 或 直接以 root 身份 运行的。注释掉 .zshrc 后仍然走代理,说明代理设置存在于其他地方。
常见原因及排查方法
1. apt 自身配置了代理
apt 有自己的代理配置文件,不受 shell 环境变量影响:
# 检查 apt 代理配置
cat /etc/apt/apt.conf
cat /etc/apt/apt.conf.d/* | grep -i proxy
如果看到类似下面的内容,就是 apt 直接配置了代理:
Acquire::http::Proxy "http://192.168.10.99:7890";
Acquire::https::Proxy "http://192.168.10.99:7890";
清除方法:
sudo rm -f /etc/apt/apt.conf.d/*proxy*
# 或者编辑删除其中的 Proxy 行
sudo nano /etc/apt/apt.conf
2. 系统级环境变量
检查这些全局配置文件:
# 系统级环境变量
cat /etc/environment | grep -i proxy
cat /etc/profile | grep -i proxy
cat /etc/profile.d/* | grep -i proxy
# 当前用户所有 shell 共用
cat ~/.profile | grep -i proxy
cat ~/.bashrc | grep -i proxy # 即使你用 zsh,apt-get 可能通过 bash 调用
3. 当前 shell 会话还缓存了旧的环境变量
如果你是在注释 .zshrc 之前 打开的终端,当前会话中的 http_proxy 环境变量仍然有效:
# 检查当前环境变量
echo $http_proxy
echo $https_proxy
env | grep -i proxy
解决方法: 关闭当前终端,重新打开一个新的,或者手动取消:
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
4. sudo 保留了环境变量
如果用 sudo 运行 apt,且 sudo 配置保留了代理变量:
# 检查 sudo 环境
sudo env | grep -i proxy
快速排查步骤
按顺序执行:
# 1. 确认当前 shell 是否有代理变量
echo "当前 shell 代理: $http_proxy"
# 2. 确认 apt 自身配置
grep -ri proxy /etc/apt/apt.conf.d/ 2>/dev/null
# 3. 确认系统级配置
grep -ri proxy /etc/environment /etc/profile /etc/profile.d/ 2>/dev/null
# 4. 确认 sudo 下是否还有
sudo env | grep -i proxy
最可能的结论
根据你描述的现象(apt 明确显示连接 192.168.10.99),最大可能是 /etc/apt/apt.conf.d/ 目录下有代理配置文件,因为 apt 的 Acquire::http::Proxy 设置优先级高于环境变量,且独立于 shell 配置。
找到并删除那个文件即可:
sudo ls -la /etc/apt/apt.conf.d/
sudo rm /etc/apt/apt.conf.d/??-proxy # 根据实际文件名调整
修改后无需重启,sudo apt-get update 立即生效。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
微信
支付宝