Поскольку мне никогда не удавалось легко обмениваться переменными между двумя системами, я разработал простую функцию bash, которая может легко извлекать (и определять, если требуется) любую переменную среды Windows.Он также заботится о путях, поэтому они конвертируются из Win32 в Un * x-line.
Я добавил это в /etc/bash.bashrc
:
winenv()
{
if [ "$#" == "0" ] || [ "$1" == "--help" ]
then
echo $'\n'Usage:
echo $'\t'winenv [-d] WINDOWS_ENVIRONEMENT_VARIABLE_NAME
echo $'\t'-d: Defines environment variable in current shell
echo $'\t Note that paths will be translated into un*x-like paths\n'
return
fi
local IFS='$\n'
local PATH_TO_TRANSLATE=$1
[ "$1" == "-d" ] && PATH_TO_TRANSLATE=$2
local VAR=$(cmd.exe /c echo %${PATH_TO_TRANSLATE}% | tr -d '\r')
local NEW=$(wslpath -u "${VAR}" 2>/dev/null || echo ${VAR})
echo "${PATH_TO_TRANSLATE} = ${VAR} -> ${NEW}"
[ "$1" == "-d" ] && export "${PATH_TO_TRANSLATE}=${NEW}"
}
И все, что мне нужно сделать, чтобы отобразитьнужно вызвать winenv PROGRAMFILES
(например)
Или, если я ожидаю его экспортировать, мне просто нужно добавить аргумент -d перед именем переменной, как в winenv -d WINDIR
.