Cygwin 的 `(no)dosfilewarning` 行为

Cygwin 的 `(no)dosfilewarning` 行为

原始问题

Cygwin 的CYGWIN环境变量及其内容对 Cygwin 环境的几个方面有影响。如果CYGWIN包含nodosfilewarning

Cygwin 将警告第一次用户使用“MS-DOS”样式的路径名,而不是 POSIX 样式的路径名

正如 Cygwin 之一所述常见问题解答页面

什么是第一次?每天一次?每次计算机重启后一次?

我已经设定了CYGWIN=nodosfilewarning,但仍然有时Cygwin 警告我使用 MS-DOS 样式的路径。如果我将其设置为dosfilewarning(并重新启动 shell),无论如何我都无法触发警告(例如cd C:\\Windows—我假设这是类似MS-DOS足够的)。

我不太清楚是否CYGWIN需要在操作系统级别或 Cygwin shell 中设置该变量,但是我尝试了这两种方法,但都没有成功。没有成功我的意思是,如果将变量设置为dosfilewarning我的假设,那么每次我输入类似的内容时,Cygwin 都应该发出警告cd C:\\Windows(但它并没有这样做)。

我怎样才能验证我是否正确设置了这个愚蠢的变量并且我的设置有效? Cygwin 的常见问题解答对这个特定问题几乎没有帮助。

更新

谢谢杰德BP的回答我得出了以下结论。

CYGWIN变量可以在操作系统级别或 Cygwin shell 中设置。

cd C:\\Windows没有触发当前的警告,但是ls C:\\Windows确实触发了(谈论一致性,是吧?)。

目前,settingsnodosfilewarning确实没有报告前面提到的命令的警告,但是我最初写这篇文章是因为即使我告诉 Cygwin 不要报告这些警告,它有时还是会报告。不幸的是,我不知道什么时候以及在什么情况下(如果我进一步遇到这些警告,我会更新问题)。

答案1

每个使用 Cygwin 运行时库的进程都会将一部分共享内存映射到该进程中。这其中包含一些在使用 Cygwin 运行时库(特定安装的)的所有进程之间共享的数据。

该共享内存中的一个标志是warned_msdos标志。如果 标志warned_msdosfalse,并且dosfilewarning设置在CYGWIN进程初始化时进程所具有的环境变量中,那么您将看到警告。发出警告时,标志warned_msdos设置为true

请注意:

  • 首先,任何已 的进程都不会进行检查nodosfilewarning
  • 如果未进行检查,warned_msdos将保持设置为false
  • 共享内存将一直存在,直到所有使用它的 Cygwin 进程终止。

相关内容