我发现我的环境变量有一条奇怪的线:
$ env ... !::=::\ ...
当我启动 shell 或运行 bash 脚本时,它有时存在,有时不存在。当它不存在时,我对子 shell $(...) 的 bash 调用需要 3 个转义反斜杠,而不是每个 1 个。
知道它是什么以及如何设置它吗?
最佳答案
这是 Cygwin 对 special environment variables 之一的表示由 Windows 命令处理器 (cmd.exe) 创建,以便像 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 .即使我使用Win-R直接启动Cygwin bash而不使用cmd.exe,它也存在于我的计算机上的Windows环境中,所以不清楚实际设置它是什么。
关于bash - 环境变量是什么意思 !::=::\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740460/