设置环境变量以进行子Shell调用

时间:2020-04-17 09:27:41

标签: zsh

我想扩展该概念,以便能够仅为调用一个子流程而设置环境变量。

VARIABLE=VALUE COMMAND PARAMETERS

例如

FOO=6 printenv FOO

在这种情况下,COMMAND是子外壳。为了说明这个问题,我使用了

 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'

或a

# Two nested subshells, instead of one, and a lot more to type:
 (export FOO=6; export BAR=7; (printenv FOO; printenv BAR))

但是还有一种简单的方法在子外壳上使用带括号的符号吗?

我某种程度上感觉到我在使用(....)制作子shell时缺少基本知识。

1 个答案:

答案 0 :(得分:1)

最简单的方法是在单个子shell中使用export变体。不需要二级嵌套子外壳。

$ (export FOO=6; export BAR=7; printenv FOO; printenv BAR);
6
7