env 命令简介
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 解释器来执行。