如何让 gsettings 设置 org.gnome.system.proxy.socks 导出 socks5:// all_proxy 变量而不是 sock://

如何让 gsettings 设置 org.gnome.system.proxy.socks 导出 socks5:// all_proxy 变量而不是 sock://

我想为 Gnome 系统设置代理。当我使用这些命令时:

gsettings set org.gnome.system.proxy.socks host 127.0.0.1
gsettings set org.gnome.system.proxy.socks port 1080

为系统设置代理,结果系统会将环境变量all_proxy和设置ALL_PROXYsocks://127.0.0.1:1080

但问题是,Linux 中的许多应用程序(例如 pip)在处理协议时存在问题socks://。它要求您具体说明 socks 的版本,这意味着我最好设置all_proxy和 ,而ALL_PROXY不是socks5://127.0.0.1:1080模糊的socks://127.0.0.1:1080

我喜欢的gsettings是它可以根据我的需要帮助我打开和关闭代理。使用 更改环境变量export只会在当前终端会话中生效。使用~/.bashrc或更改环境变量/etc/environment将使其成为永久代理。这就是为什么 的功能gsettings似乎是无可替代的。

我们可以改进 的功能吗gsettings?如果不能,实现所需代理切换的最佳做法是什么?

答案1

据我所知,这些设置被复制到环境变量中仅通过 GNOME 终端而不是整个 GNOME 会话,因此您可以安全地通过终端 shell 的启动脚本来调整它们,例如在您的~/.bashrc

if [[ $all_proxy ]]; then
    all_proxy=${all_proxy/#socks:/socks5:}
fi
if [[ $ALL_PROXY ]]; then
    ALL_PROXY=${ALL_PROXY/#socks:/socks5:}
fi

相关内容