Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何导出http_代理变量?_Bash_Networking_Proxy - Fatal编程技术网

Bash 如何导出http_代理变量?

Bash 如何导出http_代理变量?,bash,networking,proxy,Bash,Networking,Proxy,我正在尝试编写一个简单的脚本来设置代理设置。实际上,我只需要使用export命令导出http\u proxy ftp\u proxy https\u proxy…变量。 但是,当我从shell手动运行它时,它不起作用,因为export只影响当前shell和子shell,而不影响其他shell。另外,我不想从.bashrc调用它,因为它不是我的默认代理设置 那么我应该如何导出http\u proxy变量以使其全局生效呢?由于您无法访问.bashrc,因此可以使用source命令,该命令将在当前sh

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


那么我应该如何导出
http\u proxy
变量以使其全局生效呢?

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

source ./script

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

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

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

这就是我所做的:

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

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

$ . ~/.bashrc
现在我只做:

$ setproxy

$setp和

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

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

. script.sh

根本无法访问
~/.bashrc
?@Cthulhu对不起,我的英语太差了。我有权访问
~/.bashrc
,但我不想每次需要禁用代理设置时都对其进行编辑。
. script.sh