Bash 脚本 - 设置本地环境变量(代理)

Bash 脚本 - 设置本地环境变量(代理)

我正在尝试创建2脚本。一个用于设置本地环境变量,另一个用于取消设置本地环境变量。

首先,这两个脚本都是根据以下命令创建的:

touch set-proxy.sh touch unset-proxy.sh

然后我将它们都设为可执行:

chmod 700 set-proxy.sh chmod 700 unset-proxy.sh

然后我进入该set-proxy.sh文件并将以下内容放入其中:

#!/bin/bash

`export HTTP_PROXY=http://nick:nick@proxy.***.***.com:****`
`export HTTPS_PROXY=http://nick:nick@proxy.***.***.com:****`
`export HTTP-PROXY=http://nick:nick@proxy.***.***.com:****`
`export HTTPS-PROXY=http://nick:nick@proxy.***.***.com:****`
`export http_proxy=http://nick:nick@proxy.***.***.com:****`
`export https_proxy=http://nick:nick@proxy.***.***.com:****`
`export http-proxy=http://nick:nick@proxy.***.***.com:****`
`export https-proxy=http://nick:nick@proxy.***.***.com:****`

然后我进入该unset-proxy.sh文件并将以下内容放入其中:

#!/bin/bash

`unset HTTP_PROXY`
`unset HTTPS_PROXY`
`unset HTTP-PROXY`
`unset HTTPS-PROXY`
`unset http_proxy`
`unset https_proxy`
`unset http-proxy`
`unset https-proxy`

我非常需要一种快速的方法来取消和设置所有代理配置。我认为创建两个脚本是最简单的方法。

但是,当我运行./unset-proxy.sh./set-proxy.sh收到以下错误消息时:

./unset-proxy: line 5: unset: `HTTP-PROXY': not a valid identifier
./unset-proxy: line 6: unset: `HTTPS-PROXY': not a valid identifier
./unset-proxy: line 9: unset: `http-proxy': not a valid identifier
./unset-proxy: line 10: unset: `https-proxy': not a valid identifier

(然后我也得到同样的结果set-proxy.sh)。

如果有人能帮助我指出我做错了什么以及如何纠正它的正确方向,我将非常感激。谢谢。

答案1

看起来这里有几个错误。首先,变量赋值表达式不应位于反引号内。反引号是(有点过时的)语法命令替换。我想你想要的是单引号引用变量这样做是为了保留字符串文字并防止参数替换

此外,您不能在变量名称中使用连字符。这是摘录自Bash 手册,第 2 章:定义

姓名

仅由字母、数字和下划线组成且以字母或下划线开头的单词。名称用作 shell 变量和函数名称。也称为标识符

另请参阅以下帖子以获取更多信息:

删除反引号和连字符后,您的脚本可能如下所示:

#!/bin/bash
# set_proxy.sh

export HTTP_PROXY='http://nick:nick@proxy.***.***.com:****'
export HTTPS_PROXY='http://nick:nick@proxy.***.***.com:****'
export http_proxy='http://nick:nick@proxy.***.***.com:****'
export https_proxy='http://nick:nick@proxy.***.***.com:****'

和:

#!/bin/bash
# unset_proxy.sh

unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy

最后一点:执行脚本会导致它在子 shell 中运行,因此环境变量不会影响您的活动 shell 会话。例如,请参阅以下帖子:

简短的回答是你不能。因此,如果您希望脚本修改当前的 shell 环境,那么您必须“获取”它们,例如:

source set_proxy.sh

source unset_proxy.sh

相关内容