我正在尝试编写一个简单的脚本来设置代理设置。实际上我只需要用http_proxy ftp_proxy https_proxy ...
命令导出export
个变量。
但是当我从shell手动运行它时它不起作用,因为export
只影响当前的shell和子shell,但没有其他的。此外,我不想从.bashrc
调用它,因为它不是我的默认代理设置。
那么我应该如何导出http_proxy
变量以使其全局生效?
答案 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