如何在Linux和类似Unix的系统上临时清除Bash环境变量

时间:2020-01-09 10:42:25  来源:igfitidea点击:

如何临时清除bash shell环境变量。我不想删除或者取消设置导出的环境变量。如何在bash或者ksh shell的临时环境中运行程序?您可以使用env命令在Linux或者类似Unix的系统上设置和打印环境。 env命令根据指定的条件修改环境后执行实用程序。

如何显示当前环境?

打开终端应用程序,然后执行以下命令之一:

printenv

或者

env

计算环境变量

执行以下命令:

env | wc -l
printenv | wc -l

输出示例:

20

在bash/ksh/zsh的干净环境中运行程序

语法如下:

env -i your-program-name-here arg1 arg2 ...

例如,在不使用http_proxy和/或者所有其他变量的情况下运行wget程序,即暂时清除所有bash/ksh/zsh环境变量并运行wget程序:

env -i /usr/local/bin/wget www.theitroad.local
env -i wget www.theitroad.local

当您要运行命令而忽略已设置的任何环境变量时,此功能非常有用。
我每天多次使用此命令来忽略http_proxy和我设置的其他环境变量。

示例:使用http_proxy

$ wget www.theitroad.local
--2014-08-03 23:20:23--  http://www.theitroad.local/
Connecting to 10.12.249.194:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'index.html'

index.html                 [                           ]  36.17K  87.0KB/s   in 0.4s   

2014-08-03 23:20:24 (87.0 KB/s) - 'index.html' saved [37041]

示例:忽略http_proxy

$ env -i /usr/local/bin/wget www.theitroad.local
--2014-08-03 23:25:17--  http://www.theitroad.local/
Resolving www.theitroad.local... 10.16.144.194
Connecting to www.theitroad.local|10.16.144.194|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'index.html.1'

index.html.1               [                           ]  36.17K   115KB/s   in 0.3s   

2014-08-03 23:25:18 (115 KB/s) - 'index.html.1' saved [37041]

选项-i使env命令完全忽略它所继承的环境。
但是,这不会阻止您的命令(例如wget或者curl)设置新变量。
另外,记下运行bash/ksh shell的副作用:

env -i env | wc -l ## empty ##
# Now run bash ##
env -i bash 
## New enviroment set by bash program ##
env | wc -l

示例:设置环境变量

语法为:

env var=value /path/to/command arg1 arg2 ...
## 或者 
var=value  /path/to/command arg1 arg2 ...

例如,设置http_proxy:

env http_proxy="http://USER:[email protected]:3128/" \
/usr/local/bin/wget www.theitroad.local