3

Оригинальный вопрос

Переменная среды Cygwin CYGWIN и ее содержимое влияют на некоторые аспекты среды Cygwin. Если CYGWIN содержит nodosfilewarning то

Cygwin предупредит в первый раз, когда пользователь использует имя пути в стиле MS-DOS, а не имя в стиле POSIX

как указано на одной из страниц часто задаваемых вопросов Cygwin.

Что в первый раз? Один раз в день? Один раз между перезагрузками компьютера?

Я установил CYGWIN=nodosfilewarning , но иногда Cygwin предупреждает меня, что я использую пути в стиле MS-DOS. Если я установлю для него dosfilewarning о файлах (и перезапущу свою оболочку), я не смогу вызвать предупреждение, несмотря ни на что (например, cd C:\\Windows предполагаю, что этого достаточно для MS-DOS ).

Я точно не знаю, должна ли переменная CYGWIN быть установлена на уровне ОС или в моей оболочке Cygwin, однако я пробовал оба безуспешно. Под успехом я подразумеваю, если переменная установлена в dosfilewarning я предполагаю, что Cygwin должен предупреждать меня каждый раз, когда я набираю что-то вроде cd C:\\Windows (чего не происходит).

Как я могу проверить, что я правильно установил эту глупую переменную и мои настройки действуют? FAQ Cygwin дает небольшую помощь по этой конкретной проблеме.

Обновить

Благодаря ответу JdeBP мне удалось прийти к следующему выводу.

Переменная CYGWIN может быть установлена либо на уровне ОС, либо в оболочке Cygwin.

cd C:\\Windows не вызывает предупреждение под рукой, но ls C:\\Windows делает (говорить о согласованности, да?).

На данный момент настройки nodosfilewarning действительно не сообщают о предупреждении для ранее упомянутой команды, однако я изначально написал этот пост, потому что, хотя я и сказал Cygwin не сообщать об этих предупреждениях, это иногда происходило. К сожалению, я не знаю, когда и при каких обстоятельствах (я уточню вопрос, если я еще столкнусь с этими предупреждениями).

1 ответ1

2

Каждый процесс, использующий библиотеку времени выполнения Cygwin, отображает в этом процессе часть общей памяти. Он содержит некоторые данные, которые совместно используются всеми процессами, использующими (эту конкретную установку) библиотеку времени выполнения Cygwin.

Одним из флагов в этой общей памяти является флаг warned_msdos . Если флаг warned_msdos false и если dosfilewarning устанавливается в переменной окружения CYGWIN , что процесс при инициализации процесса, то вы увидите предупреждение. Когда выдается предупреждение, для флага warned_msdos устанавливается значение true .

Обратите внимание, главное:

  • Во-первых, проверка не будет выполняться ни одним процессом, в котором было nodosfilewarning .
  • Если проверка не выполнена, warned_msdos останется установленным в false .
  • Общая память остается до тех пор, пока не завершатся все процессы Cygwin, использующие ее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .