env 命令简介

发布时间 2024-01-12 01:28:03作者: Undefined443

env 命令在 Unix 和 Unix-like 操作系统中,是用来运行一个指定的程序/命令,在执行时可以修改环境变量的一个工具。使用 env 可以启动任何指定的指令,并在这个指令的执行过程中设置或者修改环境变量。

env 命令的常见用途包括:

打印当前环境变量

简单地运行 env 不加任何参数,可以列出当前 shell 会话的所有环境变量。

env

修改或设置环境变量

在运行某个程序时,如果需要临时修改环境变量,可以使用 env 来实现。

env VAR=value command

这个例子中,VAR 环境变量被设置为 value,然后执行 command。执行完成后,环境变量的更改不会影响当前 shell 会话或其他程序。

很多时候我们会这样写:

VAR=value command

这种写法更推荐,不过这种写法和上面的写法并不完全等价。如果其中一种形式不可用,可以试试换另外一种形式。

清除环境变量

可以使用 env -i 来运行一个命令,而在执行该命令时会忽略当前的环境变量,也就是说命令将在一个清洁的环境中执行。

env -i command

env 命令在编写脚本时特别有用,比如你需要确保一个命令是在特定的环境变量配置下执行。它也常常被用于创建 Cron 作业,因为 Cron 作业默认不会加载用户的整个环境配置。此外,env 也是制作可移植脚本的常用工具,因为它允许脚本找到系统路径中某个程序的正确执行文件,即使不同系统的路径设置不一样。例如,#!/usr/bin/env python 这样的 shebang 行可以确保脚本使用环境变量 PATH 中的第一个 Python 解释器来执行,而与具体的安装位置无关。

解释:如果将 shebang 行写为 #!/usr/bin/python,相当于写死了 Python 解释器的路径,如果用户的 Python 没有安装在这个路径下,或者用户不想使用这个路径下的 Python,那么这种写法就不合适。而 #!/usr/bin/env python 这样的写法则避免了这个问题,它会确保脚本使用 env 寻找环境变量 PATH 中的第一个 Python 解释器来执行。