Как передать переменную среды из WSL в windows исполняемый файл - PullRequest
0 голосов
/ 27 февраля 2020

Из подсистемы Windows для терминала Linux (v1) Alpine bash я бы хотел установить переменную окружения, которая будет передана в исполняемый файл windows. Есть ли способ сделать это?

пример того, что я надеялся, напечатал бы "Hello, World!":

windows-10:~# export X=World
windows-10:~# cmd.exe /c 'echo Hello, %X%!'
Hello, %X%!

См. Ответ от Филиппа ниже.

Вот копия соответствующей информации от https://docs.microsoft.com/en-us/windows/wsl/interop

Совместное использование переменных среды между Windows и WSL

Available in Windows Insider builds 17063 and later.

До 17063, только Windows Переменная окружения, к которой WSL мог получить доступ, была PATH (поэтому вы могли запускать исполняемые файлы Win32 из-под WSL).

Начиная с 17063, WSL и Windows совместно используют WSLENV, специальную переменную среды, созданную для соединения Windows и Linux дистрибутивы, работающие на WSL.

Свойства WSLENV:

It is shared; it exists in both Windows and WSL environments.
It is a list of environment variables to share between Windows and WSL.
It can format environment variables to work well in Windows and WSL.

В WSLENV доступно четыре флага, которые влияют на преобразование этой переменной среды.

Флаги WSLENV :

/p - translates the path between WSL/Linux style paths and Win32 paths.
/l - indicates the environment variable is a list of paths.
/u - indicates that this environment variable should only be included when running WSL from Win32.
/w - indicates that this environment variable should only be included when running Win32 from WSL.

Флаги можно комбинировать при необходимости.

1 Ответ

1 голос
/ 27 февраля 2020

Можете ли вы попробовать это?

~$ export X=World
~$ export WSLENV=X/w
~$ cmd.exe /c 'echo Hello, %X%!'
Hello, World!
...