在修改的环境中运行程序
env [-0i] [-] [-u name] [var=value] … [cmd [args]]
env [--help] [--version]
利用env命令,可以在继承的运行环境的基础上,增加或修改变量设置,在定制的运行环境中运行指定的命令。其中,var是现有或新增的变量,value是赋予变量的值,必要时可以同时设置多个变量。cmd可以是系统提供的任何外部命令,args是选用的命令参数。如果未指定命令,env命令将会逐行显示当前运行环境的所有变量及其设置,其效果类似于不加任何选项与参数的set命令。
在env命令行中,第一个不包含等号“=”的参数即为需要调用的命令,是需要按照命令检索路径PATH检索的外部命令,余下的命令行参数是传递给指定命令的参数。
变量的修改优先于命令的检索。因此,修改PATH变量将会影响到指定命令的检索,在减少PATH变量的命令检索路径时尤其需要慎重,PATH变量不能为空,尤其不能忽略关键的目录,如/bin等。
env命令的主要用途是利用给定的工作环境(包括继承、新增以及修改后的环境变量设置),运行指定的命令,尤其是按照命令检索路径PATH的定义运行外部命令,从而绕过Shell的内置命令。例如,bash提供echo、expr、kill、printf、pwd、read及test等内置命令,与外部命令同名。在Shell解释处理命令时,内置命令是优先于外部命令的,如果想要刻意运行外部命令,一种方法是输入全路径名,如/usr/bin/expr。如果不知道路径名,另外一种办法是利用env命令,如“env expr”。
-0, --null 使用NULL字符取代换行符,作为每行输出数据的行终止符。
-i, --ignore-environment 忽略继承的环境,从一个空的运行环境开始。单独一个连字符“-”等价于“-i”选项。
-u name, --unset=name 从运行环境中删除指定的变量。
1. 在包含当前目录的命令检索路径的环境中运行echo命令,确保运行的echo命令是外部的/bin/echo命令,而非Shell内置的echo命令。
$ env PATH=/bin:/usr/bin:. echo "some string" some string $
2. 显示当前的运行环境。
$ env
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z