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

use*_*636 1 shell bash proxy shell-script environment-variables

我正在尝试创建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:****`
Run Code Online (Sandbox Code Playgroud)

然后我进入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`
Run Code Online (Sandbox Code Playgroud)

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

但是,当我运行./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
Run Code Online (Sandbox Code Playgroud)

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

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

iga*_*gal 6

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

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

姓名

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

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

以下是删除反引号和连字符后脚本的外观:

#!/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:****'
Run Code Online (Sandbox Code Playgroud)

和:

#!/bin/bash
# unset_proxy.sh

unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
Run Code Online (Sandbox Code Playgroud)

最后一个注意事项:执行脚本会使其在子 shell 中运行,因此环境变量不会影响您的活动 shell 会话。例如,请参阅以下帖子:

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

source set_proxy.sh

source unset_proxy.sh
Run Code Online (Sandbox Code Playgroud)