在(Git)bash中,如何设置包含特殊字符的环境变量键名?

3
在Windows上的Git Bash中,如何设置一个包含特殊字符的环境变量键名?比如 some.var:
以下命令不可行:export "some.var:"=123

你真的应该解释为什么需要这样做,因为它看起来像X-Y问题 - Kurtis Rader
说实话,这是我们多年来在生产应用中一直在使用的东西,突然间出了问题,我需要测试它 - 所以在这个时候讨论其原因似乎是浪费时间。 - joniba
1个回答

5

export需要一个有效的标识符,因此它只能定义一小部分合法的环境字符串。

如果你有一个需要非有效标识符的名称的程序,你将需要使用外部程序来创建必要的环境变量。例如:

$ env -i "some.var:=123" env
some.var:=123

env 命令本身会报告其继承的环境变量。通过一个命令,可以在可能被修改的环境中运行该命令。使用 -i 可以清除初始环境(这样我们就不会淹没在无关的环境字符串中;实际上,如果你想继承当前环境,可以省略它),字符串定义了一个名为 some.var: 的变量具有值 123


谢谢,这个可行,但有没有一种方法可以持久化这个变量,这样我就不需要在每个命令之前重新定义它了? - joniba
1
很遗憾,shell本身没有除了导出普通shell变量之外创建环境变量的方法。您需要使用此技术启动您的shell,从父级继承值而不是通过shell配置文件设置它们。 - chepner
在实践中,您可以定义一个包装器来运行您想要执行的命令,类似于 my_cmd () { env "some.var:=123" my_cmd; }。(这里没有递归,因为 env 将在您的路径中查找命令,而不是相同名称的 shell 函数。) - chepner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接