env VAR=VAL 命令或 VAR=VAL 命令

env VAR=VAL 命令或 VAR=VAL 命令

两者之间的真正区别是什么:

env VARIABLE=VALUE command

VARIABLE=VALUE command

在 bash 兼容的 shell 中?

注意:我自己做了一些测试,我看不出有什么区别

编辑:一个例子是

EDITOR=nano visudo

env EDITOR=nano visudo

答案1

外部命令的结果没有太大差异。运行env只涉及额外的exec变量赋值解析,否则 shell 会执行此操作。env -i会更有用,因为它会清除环境,这在 shell 中并不是那么简单。

在这两种情况下,诸如命令替换之类的扩展VAR=$(somecmd)都会在分配发生之前由 shell 运行,并且两种情况都遵循PATH等等。我能想到的唯一区别是 的值_,它Bash 设置为它运行的命令的名称(但env没有)。当然,如果没有env,您也可以运行 shell 的内置版本的命令。

相关内容