环境变量是什么意思!:: = :: \

时间:2015-06-09 18:53:05

标签: bash cygwin environment-variables

我发现我的环境变量是一个奇怪的行:

$ env
...
!::=::\
...

当我启动shell或运行bash脚本时,它有时会出现,有时不会出现。当它不存在时,我的bash调用子shell $(...)需要3个转义反斜杠而不是每个1。

知道它是什么以及如何设置它吗?

1 个答案:

答案 0 :(得分:4)

这是Cygwin对Windows命令处理器(cmd.exe)创建的special environment variables之一的表示,以便以与MS-DOS相同的方式跟踪每个驱动器的单独当前目录。您还应该在env的输出中看到!C:=C:\Users\Ross Ridge之类的条目。 Windows命令处理器以=X:=X:\Path的形式创建它们,但Cygwin将初始=更改为!,以使其成为合法的Unix环境条目。

因此,您在Cygwin环境中看到!::=::\的原因是因为=::=::\在Cygwin继承的Windows环境中。我不确定为什么Windows环境中有=::=::\条目,:不是合法的驱动器号,而是Raymond Chen says it's a bug。它存在于我的计算机上的Windows环境中,即使我使用Win-R直接启动Cygwin bash而不使用cmd.exe,因此不清楚实际设置它是什么。