首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git-Bash是内插环境变量。

Git-Bash是内插环境变量。
EN

Stack Overflow用户
提问于 2021-09-22 14:20:37
回答 1查看 336关注 0票数 2

我想知道是否有人能解释一下以下奇怪的行为:

我有一个使用os.environ的python脚本来提取用于pysftp的环境变量。该变量被称为"sftp_wd“和"sftp_wdir”,值为"/etc/“,两者的效果是相同的。

代码语言:javascript
复制
>>> import os
>>> os.environ["sftp_wdir"]

cmd中的python代码生成正确的值:/etc/...

但是,当在git中运行时,其值如下所示:<%USERPROFILE%/AppData/Local/Programs/Git>/etc/...

在这两种情况下,我都使用相同的conda环境,并且在vscode调试器中运行时效果也会显示出来。另外,如果使用winpty运行python,我看不到这种效果。我看过关于os.environ的文档和git使用的环境变量,但没有找到任何解释这一点的东西。

printenv也显示正确的值,所以我倾向于相信这是特定于git初始化python的方式,但我似乎无法确定实际发生的事情

编辑:作为对@CharlesDuffy的响应,这似乎可以用任何环境变量和以"/“开头的任何值复制,例如,我创建了一个名为/var/的环境变量,名为/var/。结果如下:

回波

代码语言:javascript
复制
$ echo $random
/var/

printf

代码语言:javascript
复制
$ printf '%q\n' "$random"
/var/

python

代码语言:javascript
复制
$ python
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Ana
conda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['random']
'C:/Program Files/Git/var/'
>>>

注意:从上面到" Git“文件夹的路径的更改是从更新到v2.33.0.2-64位的Git Bash。不过,问题仍然是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 16:58:21

这是用于编译Git Bash的Windows兼容性库msys的行为。有关此行为的文档位于https://www.msys2.org/docs/filesystem-paths/

可以使用环境变量来关闭它:

要完全关闭环境变量中的自动路径转换,导出MSYS2_ENV_CONV_EXCL='*'

  • To只对名为randomexport MSYS2_ENV_CONV_EXCL=random

的变量关闭

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69286095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档