在ubuntu中通过bash脚本设置代理

在ubuntu中通过bash脚本设置代理,bash,networking,ubuntu,proxy,system,Bash,Networking,Ubuntu,Proxy,System,我正在使用gsettings工具自动设置系统代理[系统设置->网络代理],因此我用以下几行代码编写了一个简单的bash脚本: gsettings set org.gnome.system.proxy mode 'auto' //for another mode gsettings set org.gnome.system.proxy mode 'none' 我将此脚本放在/etc/network/if up.d中,因为我希望在笔记本电脑连接到internet时运行该脚本。我在我的主文件夹

我正在使用gsettings工具自动设置系统代理[系统设置->网络代理],因此我用以下几行代码编写了一个简单的bash脚本:

 gsettings set org.gnome.system.proxy mode 'auto'
 //for another mode
 gsettings set org.gnome.system.proxy mode 'none'

我将此脚本放在/etc/network/if up.d中,因为我希望在笔记本电脑连接到internet时运行该脚本。我在我的主文件夹中保存了一份脚本副本,当我运行该副本时,脚本似乎工作正常,我可以在网络代理窗口中看到更改。但是,当我在/etc/network/if up.d文件夹中运行脚本时,由于某种原因,设置似乎没有应用。我在这里遗漏了什么?

我终于让脚本工作起来了!自从我被gsettings工具卡住已经一周了。现在,我想要完成的是运行gsettings工具来为用户设置代理,尽管执行thas的bash脚本由root拥有,因此只有root环境变量。现在,这可以推广到任何命令,要作为特定用户运行commad,我们只需执行以下操作:

su username -c "command to execute"
#replace username by your username in the bash script
如果命令只包含一个单词,则可以删除双引号。我很高兴。每次连接到internet时,我不需要切换配置文件和手动设置代理配置[ip地址等]


希望这对有类似问题的人有所帮助:D

嗨,你的脚本成功了吗?没有@emil,我尝试了你的解决方案,但没有成功:/n你是否尝试了我对我的答案的最新评论,手动运行sudo-s等?您是否收到任何错误消息?否则,您可以使用
env
打印所有环境变量,并尝试设置部分/全部,直到成功。最后一种选择是使用
strace gsettings args
并比较输出。嘿@emil,非常感谢您的持续支持!我尝试了这个命令strace gsettings args,当我运行存储在/etc/network/if-up.d/中的bash脚本时,我得到一个系统跟踪错误:gsettings命令找不到。我认为由于某种原因,它找不到特定的文件/usr/bin/gsettings,但是当我将bash脚本保存在我的主文件夹中时,我可以看到执行的命令列表,并且/usr/bin/gsettings文件被正确识别和加载。你认为这可能是什么原因?听起来很奇怪,位置很重要,脚本的内容是否相同?它们的执行方式是否相同?我认为如果您用脚本的当前内容以及如何执行脚本来更新您的问题会很有帮助。您确定是指
sudo
而不是
su
?以下语法可以在手册
sudo(8)
su(1)
中找到:
sudo-u username-command
su username-c-command
。哦,我真的很抱歉@emil,应该是“su”,我刚刚检查了脚本。我会马上编辑答案。谢谢你指出!