我发现我的环境变量是一个奇怪的行:
$ env ... !::=::\ ...
当我启动shell或运行bash脚本时,它有时会出现,有时不会出现。当它不存在时,我的bash调用子shell $(...)需要3个转义反斜杠而不是每个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,因此不清楚实际设置它是什么。