【问题标题】:How should I export http_proxy variable?我应该如何导出 http_proxy 变量?
【发布时间】:2012-10-17 09:50:41
【问题描述】:

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

那么我应该如何导出http_proxy变量才能全局生效呢?

【问题讨论】:

  • 根本无法访问~/.bashrc
  • @Cthulhu 对不起我的英语。我可以访问~/.bashrc,但我不想每次需要禁用代理设置时都对其进行编辑。

标签: bash networking proxy


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    不要在脚本中执行此操作,而是将其设为函数。您可以在 .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
    

    【讨论】:

      【解决方案3】:

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

      source ./script
      

      【讨论】:

        【解决方案4】:

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

        . script.sh
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-09
          相关资源
          最近更新 更多