如何在命令行中取消设置变量?

Ham*_*ava 146 shell yaourt

我尝试了以下命令来设置代理yaourt

export ALL_PROXY=http://proxy.example.com:8080
Run Code Online (Sandbox Code Playgroud)

问题是如何取消设置代理yaourt?通常,如何取消设置当前 shell 中变量的值?

Gil*_*il' 209

要删除环境变量,请运行

unset ALL_PROXY
Run Code Online (Sandbox Code Playgroud)

请注意,环境变量仅在程序及其启动的程序中生效。如果在一个 shell 窗口中设置环境变量,它不会影响其他 shell 窗口。

如果您已添加export ALL_PROXY=…到初始化文件,请将其从那里删除。

您可以export不带参数运行以查看当前 shell 中设置了哪些环境变量。

请记住,要使 shell 变量可用于由该 shell 启动的程序,您需要通过export VAR在赋值后运行VAR=VALUE或组合两者 ( export VAR=VALUE)来导出它。


cof*_*Mug 35

要取消设置 bash 中的绑定变量unset VARIABLEunset ALL_PROXY在您的情况下)。该命令实际上删除了变量。您还可以通过以下方式将变量的值设置为空

VARIABLE=
Run Code Online (Sandbox Code Playgroud)

或者

VARIABLE=""
Run Code Online (Sandbox Code Playgroud)

不同之处在于后两个命令不会删除变量。您可以通过使用-u标志 withset强制它在替换时将未设置的变量视为错误来查看差异:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,bash 抱怨varis unbound(在取消其值之后)这是预期的错误(注意这不会发生在第二个 echo 命令中,这意味着它var的值为emptyor null)。

  • @Abhinav 在脚本中使用 `unset`。同样适用。 (2认同)