2 часть
Продолжаю искать различные способы передать изменённую переменную среды path при открытии встроенного терминала и при запуске задачи, а так же провожу эксперименты.
Решил пока остановиться на поиске способа для
tasks.json, так как с настройкой на уровне settings.json всё оказалось просто и понятно, она прекрасно работает, как и задумано, а вот для задач всё странно.Я нашёл параметр
options.env.path, но в процессе экспериментов и тестирования различных комбинаций настроек, я заметил неожиданное и непонятное, неправильное поведение.Если определить этот параметр глобально на уровне tasks или локально на уровне уровне отдельной задачи и изменять там переменную среды path, то задачи типа process почему-то перестают находить стандартные системные исполняемые файлы, например,
cmd.exe.Такое чувство, что ломается или затирается path для самого vs code.
Но я такого ещё не видел, чтобы настройки в vs code могли менять его собственные переменные окружения, или чтобы задача сразу использовала изменённые переменные окружения для запуска процесса, дочерний процесс может их только наследовать или получать переопределённую версию.
Таким образом никакие мои настройки не должны приводить к тому, чтобы vs code не мог найти при запуске process задачи cmd.exe, так что я думаю, что я нашёл баг.
Нигде в документации я не нашёл каких-то предостережений или правил, которые запрещали бы мне изменять path для дочернего процесса, и что это бы сломало запуск задач.
При этом, если указать полный путь до cmd.exe, то задача успешно запускается и процесс получает правильный изменённый path.
Ещё я заметил, как мне кажется, странное поведение при определении настройки
options.env.path как глобально, так и локально.Если в глобальной настройке переопределить path, а в локальной оставить пустой список:
// глобально
"options":
{
// изменение только переменной path
"env":
{
"path": "C:\\HELLO;${env:path}",
},
}
// локально
"options":
{
// пустой список, ничего не добавляется, не изменяется и не удаляется
"env":
{
},
}
То задача запускается со значением path по умолчанию, наследованным от vs code.
Не знаю, должно ли быть именно такое поведение или тут тоже что-то не так, но мне показалось это странным и неочевидным, что усложнило мне тестирование и эксперименты.
ссылка на канал | ссылка на группу
