【问题标题】:In (Git)bash, set environment variable with special characters in key在 (Git)bash 中,使用键中的特殊字符设置环境变量
【发布时间】:2021-09-23 11:56:25
【问题描述】:

在 git bash(在 Windows 上)中,我如何在键中设置带有特殊字符的环境变量?喜欢some.var:。 以下不起作用:export "some.var:"=123

【问题讨论】:

  • 你真的应该包括为什么你需要这样做,因为它闻起来像 XY Problem
  • 好吧,TBH 这是我们多年来一直在生产应用程序中使用的东西,它突然坏了,我需要对其进行测试——所以现在讨论它的原因似乎是一种浪费。

标签: bash environment-variables git-bash


【解决方案1】:

export 需要有效的bash 标识符,因此它只能定义合法环境字符串的子集。

如果您的程序需要一个不是有效标识符的名称,则需要使用外部程序来创建必要的环境。例如:

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

env 自己报告其继承的环境。使用命令,它在可能修改的环境中运行该命令。 -i 清除初始环境(这样我们就不会被无关的环境字符串淹没;实际上,如果您想继承当前环境也可以省略它),并且该字符串定义了一个名称 some.var:123)。

【讨论】:

  • 谢谢,这行得通,但是有没有办法保留这个变量,所以我不需要在每个命令之前重新定义它?
  • 很遗憾,没有; shell 本身除了导出普通的 shell 变量外,没有办法创建环境变量。您需要使用这种技术启动您的 shell,从父级继承值,而不是通过您的 shell 配置文件设置它们。
  • 在实践中,您可以为要运行的命令定义一个包装器,例如my_cmd () { env "some.var:=123" my_cmd; }。 (这里没有递归,因为env 将在您的路径中查找命令,而不是同名的 shell 函数。)
猜你喜欢
  • 2016-03-14
  • 2017-09-15
  • 2015-11-14
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2020-06-19
相关资源
最近更新 更多