У моего друга есть система Windows 10, которая показывает следующее поведение:

Когда GNU make используется для запуска команды с использованием «cmd /c», а строка команды содержит подстановочный знак, то вызванный cmd.exe не завершается (как описано для параметра /c), но остается в интерактивном режиме.

Пример makefile:

clean:
        @echo makefile: making clean
        -cmd /c del /s *.pyc
        @echo makefile: made clean

Вызывая make:

(prompt) > make clean
makefile: making clean
cmd /c del /s *.pyc
Microsoft Windows [Version 10.0.17134.523]
(c) 2018 Microsoft Corporation. All rights reserved.
(prompt) >

При входе в exit make-файл продолжается:

makefile: made clean

Очевидно, что cmd /c ... вызывает командный процессор в интерактивном режиме.

Когда звездочка удалена, этого не происходит:

Пример makefile:

clean:
        @echo makefile: making clean
        -cmd /c del /s x.pyc
        @echo makefile: made clean

Вызывая make:

(prompt) > make clean
makefile: making clean
cmd /c del /s x.pyc
The system cannot find the file specified.
makefile: made clean
(prompt) >

Это происходит именно тогда, когда звездочка находится в командной строке, или когда используются двойные кавычки (как в cmd /c "del /s x.pyc").

Я никогда не видел такого поведения раньше, и у меня нет Windows 10, чтобы попробовать это сам.

Кто-нибудь знает, почему он входит в командный процессор в интерактивном режиме?

0