如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset 一个输出的环境变量。我怎样才能在 bash 或 ksh shell 的临时环境中运行程序呢?

你可以在 Linux 或类 Unix 系统中使用 env 命令设置并打印环境。env 命令可以按命令行指定的变量来修改环境,之后再执行程序。

如何显示当前环境?

打开终端应用程序并输入下面的其中一个命令:


  1. printenv


  1. env

输出样例:

Fig.01: Unix/Linux: 列出所有环境变量

统计环境变量数目

输入下面的命令:


  1. env | wc -l
  2. printenv | wc -l # 或者

输出样例:


  1. 20

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

语法如下所示:


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

例如,要在不使用 http_proxy 和/或任何其它环境变量的情况下运行 wget 程序。临时清除所有 bash/ksh/zsh 环境变量并运行 wget 程序:


  1. env -i /usr/local/bin/wget www.cyberciti.biz
  2. env -i wget www.cyberciti.biz # 或者

这当你想忽视任何已经设置的环境变量来运行命令时非常有用。我每天都会多次使用这个命令,以便忽视 http_proxy 和其它我设置的环境变量。

例子:使用 http_proxy


  1. $ wget www.cyberciti.biz
  2. --2015-08-03 23:20:23-- http://www.cyberciti.biz/
  3. Connecting to 10.12.249.194:3128... connected.
  4. Proxy request sent, awaiting response... 200 OK
  5. Length: unspecified [text/html]
  6. Saving to: 'index.html'
  7. index.html [ <=> ] 36.17K 87.0KB/s in 0.4s
  8. 2015-08-03 23:20:24 (87.0 KB/s) - 'index.html' saved [37041]

例子:忽视 http_proxy


  1. $ env -i /usr/local/bin/wget www.cyberciti.biz
  2. --2015-08-03 23:25:17-- http://www.cyberciti.biz/
  3. Resolving www.cyberciti.biz... 74.86.144.194
  4. Connecting to www.cyberciti.biz|74.86.144.194|:80... connected.
  5. HTTP request sent, awaiting response... 200 OK
  6. Length: unspecified [text/html]
  7. Saving to: 'index.html.1'
  8. index.html.1 [ <=> ] 36.17K 115KB/s in 0.3s
  9. 2015-08-03 23:25:18 (115 KB/s) - 'index.html.1' saved [37041]

-i 选项使 env 命令完全忽视它继承的环境。但是,它并不会阻止你的命令(例如 wget 或 curl)设置新的变量。同时,也要注意运行 bash/ksh shell 的副作用:


  1. env -i env | wc -l ## 空的 ##
  2. # 现在运行 bash ##
  3. env -i bash
  4. ## bash 设置了新的环境变量 ##
  5. env | wc -l

例子:设置一个环境变量

语法如下:


  1. env var=value /path/to/command arg1 arg2 ...
  2. ## 或 ##
  3. var=value /path/to/command arg1 arg2 ...

例如设置 http_proxy:


  1. env http_proxy="http://USER:PASSWORD@server1.cyberciti.biz:3128/" /usr/local/bin/wget www.cyberciti.biz

本文来自合作伙伴“Linux中国”,原文发布日期:2015-08-10

时间: 2024-09-09 14:34:58

如何在 Linux 上运行命令前临时清空 Bash 环境变量的相关文章

如何在Linux上使用命令行管理密码

如何在Linux上使用命令行管理密码 在基于密码的认证在网络盛行的今天,你可能需要或者已经使用了某种密码管理工具来跟踪管理你正在使用的所有密码.有各种各样的在线或离线服务或者软件工具用于完成此类事情,而这些工具因复杂程度.用户界面或者目标环境(如企业或终端用户)的不同而各不相同.例如,有一些是为终端用户开发基于图形化的密码管理器,如KeePass(X). 对于那些不想要依赖图形化进行密码管理的用户,笔者将会讲述如何在命令行下使用 pass来管理密码,这是一个简单的用于命令行管理密码的工具. 该密

LFCS 系列第一讲:如何在 Linux 上使用 GNU sed 等命令来创建、编辑和操作文件

LFCS 系列第一讲:如何在 Linux 上使用 GNU sed 等命令来创建.编辑和操作文件 Linux 基金会宣布了一个全新的 LFCS(Linux 基金会认证系统管理员Linux Foundation Certified Sysadmin)认证计划.这一计划旨在帮助遍布全世界的人们获得其在处理 Linux 系统管理任务上能力的认证.这些能力包括支持运行的系统服务,以及第一手的故障诊断.分析,以及为工程师团队在升级时提供明智的决策. Linux 基金会认证系统管理员--第一讲 请观看下面关于

如何在linux上分享你shell命令的输出

如何在linux上分享你shell命令的输出 前段时间我发布了一篇关于shelr.tv这个网站的文章,它提供一个服务允许你从网站上直接分享你的终端记录. 现在shelr.tv这个网站似乎关闭了,然后我四处寻找是否有类似的网站,于是我发现了commands.com. 从它的主页上来看,它的服务和其他网站提供的服务是类似的,因此让我们来测试它. 步骤 1 – 在网站上注册 只需要注册一个新的 用户名/密码,或者直接使用你的github账户快速登录. 步骤 2 – 下载安装monitor程序 Moni

如何在 Linux 上用 SQL 语句来查询 Apache 日志

如何在 Linux 上用 SQL 语句来查询 Apache 日志 Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中着重讲解 Apache HTTP web server 生成的 Apache access 日志. 这次,我们会通过另类的途径来分析 Apache access 日志,我们使用的工具是 asql.asql 是一个开源的工具,它能够允许

如何在 Linux 上从 NetworkManager 切换为 systemd-network

如何在 Linux 上从 NetworkManager 切换为 systemd-network 在 Linux 世界里,对 systemd 的采用一直是激烈争论的主题,它的支持者和反对者之间的战火仍然在燃烧.到了今天,大部分主流 Linux 发行版都已经采用了 systemd 作为默认的初始化init系统. 正如其作者所说,作为一个 "从未完成.从未完善.但一直追随技术进步" 的系统,systemd 已经不只是一个初始化进程,它被设计为一个更广泛的系统以及服务管理平台,这个平台是一个包

如何在 Linux 上安装和使用恶意软件检测工具 LMD 及杀毒引擎 ClamAV

如何在 Linux 上安装和使用恶意软件检测工具 LMD 及杀毒引擎 ClamAV 恶意软件是指任何旨在干扰或破坏计算系统正常运行的软件程序.虽然最臭名昭著的几种恶意软件如病毒.间谍软件和广告软件,但它们企图引起的危害不一:有的是窃取私密信息,有的是删除个人数据,有的则介于两者之间:而恶意软件的另一个常见用途就是控制系统,然后利用该系统发动僵尸网络,形成所谓的拒绝服务(DoS)攻击或分布式拒绝服务(DDoS)攻击. Linux Malware Detect 换句话说,我们万万不可抱有这种想法"因

linux定时运行命令

  linux定时运行命令 1.命令简介 每个用户都有各自不同的计划任务列表,用各自的帐户登录后运行 代码如下: crontab -l 就可查看到各任务的计划任务情况,使用下列命令可以修改自己的计划任务 代码如下: crontab -e 每次添加完任务后,一定记得重新启动crond服务,不然不会生效 代码如下: service crond restart 2.实例 下面为一计划任务的样例 代码如下: #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * mon-wed date

如何在Linux上构建 RAID 10阵列

如何在Linux上构建 RAID 10阵列 RAID 10阵列(又名RAID 1+0 或先镜像后分区)通过结合RAID 0 (读写操作在多个磁盘上同时并行执行)和RAID 1(数据被完全相同地写入到两个或更多的磁盘)两者的特点实现高性能和高容错性的磁盘I/O. 这篇文章会指导你如何使用五块相同的8GB磁盘来组成一个软件RAID 10阵列.因为组成一个RAID 10阵列至少需要4块磁盘(比如,两个镜像各有一对分区组合),而且需要添加一块额外的备用磁盘以防某块主要的磁盘出错.本文也会分享一些工具,在

Linux 有问必答:如何在 Linux 上安装 Node.js

Linux 有问必答:如何在 Linux 上安装 Node.js 问题: 如何在你的 Linux 发行版上安装 Node.js? Node.js 是建立在谷歌的 V8 JavaScript 引擎服务器端的软件平台上.在构建高性能的服务器端应用程序上,Node.js 在 JavaScript 中已是首选方案.是什么让使用 Node.js 库和应用程序的庞大生态系统来开发服务器后台变得如此流行.Node.js 自带一个被称为 npm 的命令行工具可以让你轻松地安装它,进行版本控制并使用 npm 的在