我想为 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_PROXY
为socks://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