У моего друга есть система 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, чтобы попробовать это сам.
Кто-нибудь знает, почему он входит в командный процессор в интерактивном режиме?