如何仅使用一个命令设置和取消设置全局代理

如何仅使用一个命令设置和取消设置全局代理

我想在 xubuntu 中设置 apt-get 的代理和全局代理像这儿但只有一个命令。会怎么样?这段代码有什么问题?我将其保存并~/.functions添加. ~/.functions.bashrc文件中,当我重新加载.bashrc文件时,第 7 行出现有关 EOF 的错误。

正确代码:

myproxy="http://proxy.server:port/"
proxyhost="proxy.server"
myport=port

# Set Proxy
function setproxy() {
    sudo tee -a /etc/environment << EOF
    http_proxy="$myproxy"
    https_proxy="$myproxy"
    ftp_proxy="$myproxy"
    no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
    HTTP_PROXY="$myproxy"
    HTTPS_PROXY="$myproxy"
    FTP_PROXY="$myproxy"
    NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
EOF

    gsettings set org.gnome.system.proxy mode manual
    gsettings set org.gnome.system.proxy.http host "$proxyhost"
    gsettings set org.gnome.system.proxy.http port "$myport"
    gsettings set org.gnome.system.proxy.https host "$proxyhost"
    gsettings set org.gnome.system.proxy.https port "$myport"

    sudo tee /etc/apt/apt.conf.d/95proxies << EOF
    Acquire::http::proxy "http://$proxyhost:$myport/";
    Acquire::ftp::proxy "ftp://$proxyhost:$myport/";
    Acquire::https::proxy "https://$proxyhost:$myport/";
EOF
}

#Unset Proxy
function unsetproxy() {
    sudo rm /etc/environment
    sudo tee /etc/environment << EOF
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
EOF

    gsettings set org.gnome.system.proxy mode none

    sudo rm /etc/apt/apt.conf.d/95proxies
}

答案1

EOF当您使用 heredocs 时,末尾的heredoc 限制字符串(此处)应该单独位于该行上 - 没有其他内容、没有空格、缩进等。因此,您的代码应如下所示:

    sudo tee /etc/apt/apt.conf.d/95proxies << EOF
    Acquire::http::proxy "http://$proxyhost:$myport/";
    Acquire::ftp::proxy "ftp://$proxyhost:$myport/";
    Acquire::https::proxy "https://$proxyhost:$myport/";
EOF

答案2

你可以不是设置全局环境变量,例如http_proxy至少无需重新启动 shell。您可以执行以下三项操作之一:

  1. 为 bash 会话设置变量并从 bash 运行您的互联网应用程序。 http_proxy=8.8.8.8 ftp_proxy=8.8.8.8 firefox
  2. 如果支持,在 DE 中设置变量,并在 DE 中启动应用程序。
  3. 为用户或系统范围设置变量并重新启动 bash 或重新登录。 http_proxy=8.8.8.8 ftp_proxy=8.8.8.8 bash firefox exit

任何一个都可以通过一个脚本来完成,即以一个命令启动,但首先要明确,你需要什么?

相关内容