我该如何导出http_proxy变量?

时间:2012-10-27 08:52:48

标签: bash networking proxy

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

那么我应该如何导出http_proxy变量以使其全局生效?

4 个答案:

答案 0 :(得分:15)

在我工作完成后的那天,我还厌倦了设置,然后取消设置代理设置。我总是希望有一个命令简单的命令来为我设置和取消设置功能。<​​/ p>

然后我想如果我在.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>

它为我设置代理。希望这会有所帮助。

答案 1 :(得分: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

答案 2 :(得分:2)

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

source ./script

答案 3 :(得分:0)

如果您不想修改.bashrc文件,请使用.

运行您的脚本
. script.sh