我想在 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。您可以执行以下三项操作之一:
- 为 bash 会话设置变量并从 bash 运行您的互联网应用程序。
http_proxy=8.8.8.8 ftp_proxy=8.8.8.8 firefox
- 如果支持,在 DE 中设置变量,并在 DE 中启动应用程序。
- 为用户或系统范围设置变量并重新启动 bash 或重新登录。
http_proxy=8.8.8.8 ftp_proxy=8.8.8.8 bash firefox exit
任何一个都可以通过一个脚本来完成,即以一个命令启动,但首先要明确,你需要什么?