Bash/Zsh - 导出名称包含冒号的环境变量

ksk*_*cou 4 bash zsh environment-variables

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

ConnectionStrings:DefaultConnection=someValue

我正在使用以下命令:

export ConnectionStrings:DefaultConnection=something

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

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

在 zsh 中出现以下错误:

export: not valid in this context: ConnectionStrings:DefaultConnection

如何设置变量名包含冒号的环境变量?

Joh*_*024 5

Bash 不支持此类名称,但您可以使用env或等外部程序创建它们python

使用环境

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

$ env a:b=3 printenv | grep ^a
a:b=3
Run Code Online (Sandbox Code Playgroud)

env 也可以用来运行一个新的 shell:

$ env a:b=4 bash
$ printenv | grep ^a
a:b=4
Run Code Online (Sandbox Code Playgroud)

(帽子提示:切普纳)。

使用蟒蛇

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')
Run Code Online (Sandbox Code Playgroud)

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

$ printenv | grep -E 'Connection|a:b'
ConnectionStrings:DefaultConnection=someValue
a:b=c
Run Code Online (Sandbox Code Playgroud)

bash 支持的环境变量名称

除非有很好的理由想要不符合标准的变量名,否则使用 bash 支持的变量名要容易得多。这将包括以字母或下划线开头,后跟零个或多个字母数字字符或下划线的名称。