Dmitry Develop: post #329 — TG.ME

1 часть
2 часть

Для проверки, как мне кажется, бага, вы можете скопировать себе эти задачи и запустить их:
{
"version": "2.0.0",
"tasks":
[
// bug task process
{
"label": "bug task process",
"type": "process",
"command": "cmd.exe",
// "command": "${env:windir}\\System32\\cmd.exe",
"args":
[
"/c",
"echo",
"%path%"
],
"group": "build",

// "options":
// {
// "env":
// {
// "path": "C:\\HELLO;${env:path}",
// },
// }
},

// bug task shell
{
"label": "bug task shell",
"type": "shell",
"command": "echo",
"args":
[
"%path%"
],
"group": "build",

// "options":
// {
// "env":
// {
// "path": "C:\\HELLO;${env:path}",
// },
// }
},
],

// "options":
// {
// "env":
// {
// "path": "C:\\HELLO;${env:path}",
// },
// }
}


Учтите особенности переопределения глобальных настроек локальными и для тестирования не оставляйте полностью незакомментированным блок options.env.path, если хотите закомментировать только значения в env параметре.

Чтобы исключить влияние кеширования значения path, которое может повлиять на результаты запуска будущих задач, после каждого запуска задачи, я принудительно убивал процесс терминала.

Сначала попробуйте запустить обе задачи без каких-либо изменений:
Обе задачи успешно запустятся и выведут вам ваше системное или пользовательское значение переменной среды path.

Пример вывода shell задачи:
*  Executing task in folder project: echo %path% 

C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
* Terminal will be reused by tasks, press any key to close it.


Пример вывода process задачи:
*  Executing task in folder project: C:\windows\System32\cmd.exe /c echo %path% 

C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
* Terminal will be reused by tasks, press any key to close it.


Однако, стоит раскомментировать параметр options.env.path глобально или локально, shell типы задач будут успешно запускаться и выводить переопределённое значение path:
*  Executing task in folder project: echo %path% 

C:\HELLO;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
* Terminal will be reused by tasks, press any key to close it.


А process типы задач будут выводить ошибку:
Executing task in folder project: C:\Users\user\storage\development\project\cmd.exe /c echo %path%
The terminal process failed to launch: Path to shell executable "C:\Users\user\storage\development\project\cmd.exe" does not exist.


Но если вместо "cmd.exe" указать "${env:windir}\\System32\\cmd.exe", process задачи тоже будут работать:
*  Executing task in folder project: C:\windows\System32\cmd.exe /c echo %path% 

C:\HELLO;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
* Terminal will be reused by tasks, press any key to close it.


ссылка на канал | ссылка на группу
👍1
January 17, 2025 362