我知道您可以使用该命令创建环境变量env.
例如:
env A.B=D bash
Run Code Online (Sandbox Code Playgroud)
问题是env需要一个命令,从而创建一个新的子进程.
Bash不允许名称中包含非字母数字字符的环境变量(除此之外_).虽然环境可能包含一行,例如A.B=D,没有要求shell能够使用它,而bash不会.其他炮弹可能更灵活.
不鼓励使用奇怪命名的环境变量的实用程序,但有些可能存在.您将需要使用env来创建这样的环境变量.您可以避免使用子进程,exec env bash但它不会为时间或资源节省太多时间.
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)