Zsh 为子shell调用设置环境变量

Zsh 为子shell调用设置环境变量,zsh,Zsh,我想扩展这个概念,以便能够为一个子流程的调用设置一个环境变量,即 VARIABLE=VALUE COMMAND PARAMETERS 比如说 FOO=6 printenv FOO 在这种情况下,COMMAND是一个子shell。作为演示此问题的示例,我使用 FOO=6 BAR=7 ( printenv FOO; printenv BAR ) 这导致了 zsh: parse error near `(' 尽管如此,为什么这不起作用 export FOO=6 export BAR=7

我想扩展这个概念,以便能够为一个子流程的调用设置一个环境变量,即

VARIABLE=VALUE COMMAND PARAMETERS
比如说

FOO=6 printenv FOO
在这种情况下,COMMAND是一个子shell。作为演示此问题的示例,我使用

 FOO=6 BAR=7 ( printenv FOO; printenv BAR )
这导致了

zsh: parse error near `('
尽管如此,为什么这不起作用

 export FOO=6
 export BAR=7
 ( printenv FOO; printenv BAR )
确实有效。我当然可以做一件事

# Explicit call of zsh needed:
FOO=6 BAR=7 zsh -c 'printenv FOO; printenv BAR'
或者

但是,对于子shell,是否也有一种使用带括号的表示法的简单方法


我不知怎的觉得,在使用
(..)

生成子shell时,我缺少一些基本的东西。最简单的方法是在单个子shell中使用导出变量。不需要二级嵌套子shell

$(导出FOO=6;导出栏=7;打印环境FOO;打印环境栏);
6.
7.

当然:我的嵌套子shell是不必要的。所以我想没有办法避免写一个显式的
export
语句?你能详细解释一下,为什么我最初的尝试失败了,出现了一个解析错误?
# Two nested subshells, instead of one, and a lot more to type:
 (export FOO=6; export BAR=7; (printenv FOO; printenv BAR))