【问题标题】:What is the meaning of environment variable !::=::\环境变量 !::=::\ 是什么意思
【发布时间】:2015-06-09 18:53:05
【问题描述】:

我发现我的环境变量有一条奇怪的线:

$ 环境
...
!::=::\
...

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

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

【问题讨论】:

  • 什么操作系统和版本?还有 bash/zsh/等?和版本?并且您主要在 Ruby 或 Python(或其他)编程环境中工作吗?有趣的。祝你好运。
  • 这是一个仅限 bash 的脚本,在 windows7 下使用 cygwin 运行。
  • 也许你可以在你的文件系统中尝试 grepping。在grep -r '!::=::\\' / 上尝试一些变体。不过,不确定如何为 cygwin 更改它。
  • 在 "env" 的输出中,在此之前和之后的行中出现了什么?
  • 我在我的 git-bash 环境中也看到了 env var。能举个子shell命令问题的例子吗?

标签: bash cygwin environment-variables


【解决方案1】:

这是 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。即使我使用Win-R不使用cmd.exe直接启动Cygwin bash,它也存在于我的计算机上的Windows环境中,因此不清楚它的实际设置。

【讨论】:

  • 很好的参考链接。这并没有回答关于逃避差异的辅助问题(但我对这个问题一开始持怀疑态度)。
猜你喜欢
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2010-10-11
  • 2021-03-31
  • 2015-01-12
  • 1970-01-01
  • 2020-05-30
相关资源
最近更新 更多