如何在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