在当前环境中使用点创建环境变量

时间:2015-04-20 16:17:24

标签: bash

我知道您可以使用命令env创建环境变量。

例如:

env A.B=D bash

问题是env需要一个命令,因此创建一个新的子进程。

2 个答案:

答案 0 :(得分:7)

Bash不允许名称中包含非字母数字字符的环境变量(除了 _ )。虽然环境可能包含A.B=D之类的行,但不要求shell能够使用它,而bash则不能。其他炮弹可能更灵活。

不鼓励使用奇怪命名的环境变量的实用程序,但有些可能存在。您需要使用env来创建这样的环境变量。您可以使用exec env bash来避免子流程,但它不会在时间或资源方面为您节省太多。

答案 1 :(得分:5)

rici有正确的答案。为了演示访问此类环境条目所需的差异,bash要求您将文本解析为文本:

$ env A.B=C perl -E 'say $ENV{"A.B"}'
C
$ env A.B=C bash -c 'val=$(env | grep -oP "^A\.B=\K.*"); echo "$val"'
C