2015-06-09 118 views
4

我已经找到了我的环境变量行奇怪:什么是环境变量的含义:: = ::

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

当我开始一个壳或运行bash脚本,它有时目前,有时不。而当它不存在时,我的bash调用subshel​​l $(...)需要3个反斜杠而不是每个1.

任何想法是什么以及如何设置它?

+1

什么操作系统和版本?还bash/zsh/etc?和版本?你是否主要在Ruby或Python(或其他)编程环境中工作?有趣。祝你好运。 – shellter

+0

这是一个bash脚本,在windows7下用cygwin运行。 –

+0

也许你可以尝试在你的文件系统中寻找。尝试对'grep -r'!:: = :: \\'/'进行一些修改。但不知道你需要如何改变它为cygwin,但。 – Aereaux

回答

4

这是Cygwin对Windows命令处理器(cmd.exe)创建的special environment variables之一的表示,以跟踪MS-DOS执行相同方式的每个驱动器的单独当前目录。您还应该在env的输出中看到类似!C:=C:\Users\Ross Ridge的条目。 Windows命令处理器以=X:=X:\Path的格式创建它们,但Cygwin将初始=更改为!以使其成为合法的Unix环境条目。因此=::=::\是在Cygwin继承的Windows环境中。我不确定为什么在Windows环境中有一个=::=::\条目,:不是合法的驱动器号,而是Raymond Chen says it's a bug。即使在我使用Win-R直接启动Cygwin bash而不使用cmd.exe的情况下,它仍存在于我的计算机上的Windows环境中,因此尚不清楚实际设置的是什么。

+0

很好找到和很好的参考链接。这并没有回答有关逃避差异的辅助问题(但我对此事持怀疑态度)。 –