WSLENVとは

Windows <-> WSL 間で環境変数を受け渡しするための環境変数

以下、Windows -> WSL の一方通行の例です

Windows側からこんな感じで送り込む

C:\WINDOWS\system32
> setx WSLENV USERPROFILE/pu:WINDIR/pu:APPDATA/pu:COMSPEC/pu:IECL_MAIL/u:IECL_PASS/u:IECL_MAIL_USER/u

WSL側ではこう見える

APPDATA はなぜか path 変換してくれない

$ wslenv
IECL_MAIL=oki.nobuhiro@iecl.ntt.co.jp
WINDIR=/mnt/c/WINDOWS
USERPROFILE=/mnt/c/Users/1000202334
IECL_PASS=Musashino09F
APPDATA=C:\Users\1000202334\AppData\Roaming
IECL_MAIL_USER=oki.nobuhiro
COMSPEC=/mnt/c/WINDOWS/system32/cmd.exe
WSLENV=USERPROFILE/pu:WINDIR/pu:APPDATA/pu:COMSPEC/pu:IECL_MAIL/u:IECL_PASS/u:IECL_MAIL_USER/u

wslenvの中身

#!/bin/sh
# vim: set ft=sh ff=unix expandtab ts=2 sw=2 :

[ -n "$DEBUG" ] && set -x
set -e

# print WSLENV

env | grep -E "$(echo "$WSLENV" | sed -e 's;/[pluw]*;;g' -e 's/:/|/g' -e 's/^/(/;s/$/)/g')"

おまけ

WSL から cmd と叩くと、カレントディレクトリをデスクトップにして cmd.exe を起動する

$ alias cmd='cd "$(wslpath "$APPDATA")/../../Desktop" && $COMSPEC'

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS