Где MinGW / Cygwin преобразует переменные среды в стиль Windows? - PullRequest
0 голосов
/ 24 декабря 2018

Если вы находитесь в оболочке Cygwin или MinGW, переменные среды, такие как $ PATH, имеют формат "UNIX" - с использованием прямой косой черты в качестве разделителей dir и двоеточием для разделения нескольких путей.Но если внутри этой оболочки вы запустите что-то вроде cmd.exe /c 'echo %PATH%', то в результате вы получите формат «Windows», используя обратную косую черту и точку с запятой соответственно.

Документировано ли это магическое преобразование где-нибудь?Или, что еще лучше, может кто-нибудь указать на код, который делает это возможным?

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

1 Ответ

0 голосов
/ 24 декабря 2018

Внутренние преобразования между форматами путей Unix и Windows выполняются с помощью функций: path.cc

https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/path.cc;h=3cb46c9c812e17460d56def2f915b21c7227f3bf;hb=HEAD

Когда программа Cygwin выполняет программу Windows, процесс порождения выполняетсяфункции в spawn.cc

https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/spawn.cc;h=37db52608e24e866e80401668ef13562f0cb67ea;hb=HEAD

Если вам нужна дополнительная информация или уточнение, используйте список рассылки cygwin.

...