5

我正在尝试编写一个简单的脚本来设置代理设置。其实我只需要用命令导出http_proxy ftp_proxy https_proxy ...变量export。但是当我从 shell 手动运行它时它不起作用,因为export只影响当前 shell 和子 shell,但不影响其他 shell。另外我不想调用它,.bashrc因为它不是我的默认代理设置。

那么我应该如何导出http_proxy变量以在全局范围内生效?

4

4 回答 4

20

回到那天,我也厌倦了设置,然后在我的工作完成后取消设置代理设置。我一直希望是否有一个命令简单的命令来为我执行设置和取消设置功能。

然后我想如果我在 .bashrc 中创建一个新函数,我可以使用 bash-tab-completion 从命令行调用它。节省更多时间。

这就是我所做的:

$ vi ~/.bashrc
function setproxy() {
    export {http,https,ftp}_proxy='http://proxy-serv:8080'
}

function unsetproxy() {
    unset {http,https,ftp}_proxy
}

$ . ~/.bashrc

现在我只是这样做:

$ setproxy

或者

$ setp<TAB> and <ENTER>

它为我设置了代理。希望这可以帮助。

于 2012-10-27T14:48:47.523 回答
4

不要在脚本中这样做,而是让它成为一个函数。你可以在你的声明这个函数.bashrc

function set_custom_proxy() {
  export http_proxy='http://myproxy:3128'
}

然后在当前 shell 中运行它:

echo $http_proxy
set_custom_proxy
echo $http_proxy

它作为函数中的变量修改而不是函数的局部变量。

编辑

仅供参考:要在函数中使用局部变量,您需要使用local关键字:

atest="Hello World"
btest="Hello World2"
function my_func() {
  local atest;
  atest="Hello World3"
  btest="Hello World4"
  echo $atest
  echo $btest
}
echo $atest
echo $btest
my_func
echo $atest
echo $btest
于 2012-10-27T12:27:37.660 回答
2

由于您无法访问.bashrc,因此您可以使用source将在当前 shell 的上下文中运行的命令,并且您设置的所有变量都将可用。

source ./script
于 2012-10-27T08:59:48.283 回答
0

如果您不想修改 .bashrc 文件,请运行您的脚本.

. script.sh
于 2013-12-27T09:59:36.547 回答