Linux env命令教程(5个例子)

如果你的工作涉及在Linux中通过命令行进行的工作,更可能的是你将使用Bash shell。你知道有一个环境吗

如果你的工作涉及在Linux中通过命令行进行的工作,更可能的是你将使用Bash shell。 你知道有一个与通过shell执行的进程有关的环境吗? 而且,如果你愿意,你可以专门调整这个环境来完成你正在做的任务。 那么在这篇文章中,我们将讨论一个命令行工具env ,它不仅可以让你访问shell环境,还可以在需要的时候更改它。

但是在我们这样做之前,值得一提的是本教程中提到的所有命令和说明都已经在Ubuntu 16.04LTS上运行的Bash shell上进行了测试。

Linux env命令

根据定义,env命令允许您在修改环境中运行程序。 以下是命令的语法,如其手册页所述:

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

这是这个手册页面关于env的内容:

Set each NAME to VALUE in the environment and run COMMAND.

按照Q&A风格的示例,您应该更好地了解此命令的工作原理:

Q1。 如何使用env命令访问所有环境变量?

您可能已经知道的Bash环境由VARNAME = VALUE条目组成。 要访问所有环境变量以及与它们相关联的值,请执行env命令,而无需任何选项。

env

以下是我们上述命令的输出:

如何使用env命令访问所有环境变量

Q2。 使用env如何临时改变环境?

env提供的关键功能是临时更改进程的环境。 例如,我们创建了一个小型的可执行文件 - 被称为env - 在执行时显示USER环境变量的值。

以下是正常情况下的输出:

如何使用env临时改变环境

现在,我们使用env命令将USER环境变量的值从'himanshu'暂时更改为可执行文件/进程的'HTF'。 以下是我们在这种情况下使用的命令:

env USER=HTF ./env

这里是在这种情况下生成的输出:

env命令输出

所以你可以看到可执行文件返回了新值。

注意:根据工具的通用语法建议,您可以调整多个环境变量的值,并使过程使用这些新值。

Q3。 使用env如何使进程忽略现有环境?

如果需要,还可以使进程忽略现有/继承的环境,然后以空的方式开始。 这可以使用-i--ignore-environment选项来完成。

例如:

使用env如何使进程忽略现有环境

Q4。 如何使env在输出中使用NUL而不是换行符?

在上面我们讨论的第一个例子中,env生成的输出行用换行符分隔。 但是,如果需要,可以使env使用NUL字符作为分隔符。 可以使用--null命令行选项访问此功能。

env --null

以下是截图示例

如何使env在输出中使用NUL而不是换行符

Q5。 如何知道基于env命令退出状态的错误?

env命令生成以下退出代码:0,125,126和127.以下是相关的错误说明:

0   if no COMMAND is specified and the environment is output
125 if ‘env’ itself fails
126 if COMMAND is found but cannot be invoked
127 if COMMAND cannot be found

如果您收到上面提到的错误代码,那么这是执行修改环境的进程/命令返回的退出状态。

结论

如果你是一个完整的命令行的新手,有可能你不会每天要求这个工具。 然而,这并不是说不值得一提 - 事实上,env在许多情况下都非常方便。 我们在本教程中分享的示例应该足以让您开始前进。 有关更多信息,请访问命令的手册页 ,或更好地执行以下命令:

info coreutils env invocation