Not much difference in the result for external commands. Running env
just involves an additional exec
to do the variable assignment parsing which the shell would otherwise do. env -i
would be more useful, since it clears the environment, which isn't that straightforward to do in the shell.
In both cases, expansions like command substitutions VAR=$(somecmd)
run by the shell before the assignments happen, and both cases follow PATH
etc. The only difference I can come up with is with the value of the _
, which Bash sets to the name of the command it runs (but env
doesn't). Of course, without env
, you might also run the shell's builtin version of the command.