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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash / Zsh - 导出环境变量,其名称包含冒号相关的知识,希望对你有一定的参考价值。

我正在尝试在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

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

答案

Bash不支持这样的名称,但您可以使用envpython等外部程序创建它们。

Using env

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

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

env也可用于运行新shell:

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

(帽子提示:Chepner)。

Using 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

Environment variable names that bash supports

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

以上是关于Bash / Zsh - 导出环境变量,其名称包含冒号的主要内容,如果未能解决你的问题,请参考以下文章

zsh 启动时无法使用已经添加到~/.bash_profile 环境变量

了解 dash shell 与 zsh shell

如何优雅的解决mac安装zsh不执行.bash_profile

解决 zsh:command not found

解决 zsh:command not found

解决 zsh:command not found