设置包含符号的环境变量

设置包含符号的环境变量

我想设置一个环境变量,其中包含我的代理服务器的 URL 和我的凭据,如下所示博客文章

我遇到的问题是我的密码包含一个 at 符号,而我不确定如何正确地对其进行转义:

SET HTTP_PROXY=http://username:p@[email protected]:8080

我该怎么做呢?

顺便说一句,我意识到设置包含我的凭据的环境变量是一个非常糟糕的想法。如果有人有经过身份验证的代理,我愿意接受其他建议,这些建议可以让我在经过身份验证的代理后面使用 Composer。

答案1

set HTTP_PROXY=http://username:p^%[email protected]:8080
  1. 需要百分比编码@密码中的 为,%40因为@是分隔符。
  2. 需要逃脱%命令中的set,这样命令解释器就不会尝试执行环境变量替换。字符^作为转义字符是一种惯例,早在 IBM/Microsoft 的 OS/2 1.x 中就已存在,并且 Microsoft 的Windows NT 也cmd支持这种惯例 —cmd以及命令解释器(如 TCC/LE)- 到今天。

答案2

在 Windows CMD Shell 中,可以使用“^”转义特殊字符。因此:

SET HTTP_PROXY=http://username:p^@assword^@proxy.yourdomain.com:8080

将输出为:

C:\>echo %HTTP_PROXY%
http://username:p@[email protected]:8080

在 shell 上。但这取决于使用变量的工具,我不确定 git 是否正确地将其作为输入(但我认为是这样)。

答案3

我刚刚发现,使用 '%' 是一个更糟糕的噩梦,因为你必须将它转义为 '^%%'命令文件

说,set http_proxy=https://my-user-name:woops-my-password-contains-^%%@windows.sucks.com:8080

>echo %http_proxy%
http_proxy=https://my-user-name:woops-my-password-contains-%@windows.sucks.com:8080

相关内容