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

raz*_*tia 5 bash

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

例如:

env A.B=D bash
Run Code Online (Sandbox Code Playgroud)

问题是env需要一个命令,从而创建一个新的子进程.

ric*_*ici 7

Bash不允许名称中包含非字母数字字符的环境变量(除此之外_).虽然环境可能包含一行,例如A.B=D,没有要求shell能够使用它,而bash不会.其他炮弹可能更灵活.

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


gle*_*man 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
Run Code Online (Sandbox Code Playgroud)