Установить переменную среды для вызова подоболочки - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу расширить концепцию, чтобы иметь возможность устанавливать переменную среды только для вызова одного подпроцесса, то есть

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'

или

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

, но есть ли также простой способ использования нотации с круглыми скобками для подоболочки?

Я как-то чувствую что мне не хватает чего-то фундаментального в создании подоболочек с использованием (....)

1 Ответ

1 голос
/ 20 апреля 2020

Самый простой подход - использовать вариант экспорта в пределах одной подоболочки. Нет необходимости во вторичной вложенной подоболочке.

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