С моего написанием этого вопроса, инструментом wslpath
был добавлен в WSL/LXSS. Этот инструмент может переводить пути окон в соответствующие правильные (?) точка монтирования в подсистеме Linux, поэтому самым простым решением было бы сейчас:
export WINHOME=$(wslpath $(cmd.exe /C "echo %USERPROFILE%"))
# echo $WINHOME prints something like /mnt/c/Users/dualed
Кроме того, теперь представляется возможным каскадное окружение, так что теперь это также опция:
export WINHOME=$(cmd.exe /C "cd /D %USERPROFILE% && bash.exe -c pwd")
PS: инструмент wslpath
выглядит крайне альфа:
man wslpath
# No manual entry for wslpath
# See 'man 7 undocumented' for help when manual pages are not available.
wslpath /?
# wslpath: /?: Invalid argument
wslpath -?
# wslpath: unrecognized option: ?
# wslpath: Invalid argument
wslpath --help
# wslpath: unrecognized option: -
# wslpath: Invalid argument
wslpath
# wslpath: Invalid argument
просто небольшое предупреждение.
Надеюсь, полезное обновление: в настоящее время я использую небольшой помощник для получения переменных среды Windows
#!/bin/bash
# 'winenv'
cmd.exe /C "echo %$*%" | tr -d '\r'
И используя это как:
WINHOME=$(wslpath "$(winenv USERPROFILE)")