bash/zsh-带有结肠的名称的导出环境变量



我正在尝试在bash中设置以下环境变量:

ConnectionsRings:DefaultConnection = someValue

我正在使用以下命令:

export ConnectionStrings:DefaultConnection=something

在bash中,我得到以下错误:

export: 'ConnectionStrings:DefaultConnection=something': not a valid identifier

和在ZSH中,以下错误:

export: not valid in this context: ConnectionStrings:DefaultConnection

如何设置一个可变名称包含结肠的环境变量?

bash不支持此类名称,但是您可以使用envpython等外部程序来创建它们。

使用env

命令env将设置环境并运行另一个命令。例如,在这里我们使用env运行printenv

$ env a:b=3 printenv | grep ^a
a:b=3

env也可以用于运行新的外壳:

$ env a:b=4 bash
$ printenv | grep ^a
a:b=4

(帽子提示:Chepner)。

使用python

python允许操纵环境。此Python脚本使用结肠创建环境变量,然后运行bash的实例:

$ cat colon.py
#!/bin/python 
import os
import subprocess
os.environ['a:b'] = 'c'
os.environ['ConnectionStrings:DefaultConnection'] = 'someValue'
subprocess.call('bash')

如果运行上述脚本,我们将获得一个新的bash提示。在新提示下,我们可以验证变量存在:

$ printenv | grep -E 'Connection|a:b'
ConnectionStrings:DefaultConnection=someValue
a:b=c

bash支持

的环境变量名称

除非有人有充分的理由需要不合格的变量名称,否则使用bash支持的变量名称要容易得多。这将包括以字母或下划线开头的名称,然后是零或更多字母数字或下划线。

最新更新