代码之家  ›  专栏  ›  技术社区  ›  sdbbs

env报告以感叹号(MSYS2/MINGW64)开头的环境变量?

  •  0
  • sdbbs  · 技术社区  · 2 年前

    我试着更新我的MSYS2/MINGW64(Windows 10)安装。最近,我注意到我的一个CMake项目无法编译,这似乎是因为它开始包含一些不相关的目录。

    所以,我看了看 env 报告——我注意到这两个条目,对我来说很奇怪——以感叹号开头;这是的输出 env 在MINGW64中 bash 外壳(和MSYS2 env 具有完全相同的前四行输出):

    $ env
    ProgramFiles(x86)=C:\Program Files (x86)
    !::=::\
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    !C:=C:\Users\user\Desktop
    ...
    

    我想我从未见过名为 !:: (感叹号-冒号-冒号)或 !C: (感叹号-C-冒号)。还要注意 !C: 变量似乎指向首先打开MINGW64或MSYS2 shell的目录(因为如果 cd 到另一个工作目录 !C: 变量保持不变)。

    所以,我的问题是——这些以感叹号开头的变量的含义是什么;是什么把它们插在那里的?(我不记得以前见过它们,所以我怀疑是与Windows相关的东西,要么是Windows更新,要么是MSYS2更新——因为我怀疑Linux/ 猛击 事物的一方需要调用任何变量 !C: )


    编辑:发现有一种叫做“间接扩张”的东西 https://unix.stackexchange.com/questions/41292/variable-substitution-with-an-exclamation-mark-in-bash -然而,对于参数(即赋值右侧的env-vars), 变量名??!!

    0 回复  |  直到 2 年前
        1
  •  0
  •   Kurtis Rader    2 年前

    在我的系统中,只有一个带有感叹号前缀:

    elvish> env
    !C:=C:\Users\krade
    

    这些env-var是从Windows继承的。这是Win32 API使用的一种机制;而不是MSYS2/Cygwin。看见 https://unix.stackexchange.com/questions/251174/strange-environment-variable-in-cygwin 详细信息。忽略它们。