Reference
更多cmd.exe帮助参考 cmd_helps
WSL备份及windows Docker安装
WSL安装维护html
在使用wsl时,老是须要执行windows的cmd,可是windows命令行对于大多数人使用起来仍是不习惯,微软提供了在windows中Linux与Windows的命令互通,便可以使用cmd shell执行Linux命令,也能够使用bash shell来执行windows命令。python
WSL可对 Windows 与 Linux 之间的集成操做:golang
.exe
)。知足上述要求,能够很好地使用windows的软件在WSL中畅快的操做,即空WSL环境拥有了python解析器 docker等操做。docker
从Build 17063
开始,能够利用 WSLENV
来加强 Win/WSL 之间的环境变量互操做。shell
.bashrc
或者windows自定义环境变量中设置WSLENV
例如:一个WSLENV
应该设置为ubuntu
WSLENV=GOPATH/l:USERPROFILE/w:SOMEVAR/wp
在17063以前,WSL访问Windows环境变量惟一方法是使用全路径(能够使用全路径从WSL下启动Win32可执行文件)。可是没有办法在WSL中设置环境变量,调用Win进程,并指望将该变量传送到进程。windows
在17063以后,引入一个名为WSLENV
的特殊环境变量,以帮助WSL和Win之间的共享。 WSLENV
存在于两个环境中。用户能够将WSLENV的值设置为耦合值与环境变量串联,每一个都以 \
为标志,以指定应该如何解析该变量。例如:bash
/p
表示应在WSL和Win32之间转换path。例如。在WSL中设置变量,将其添加到WSLENV设置/p
标志,而后在win环境cmd.exe中读取变量,该值会随着rootfs的转变而转换为对应的值。工具
root@stranger:/mnt/d# export TRANSLATABLE=`pwd` root@stranger:/mnt/d# echo $TRANSLATABLE /mnt/d root@stranger:/mnt/d# export WSLENV=TRANSLATABLE\p root@stranger:/mnt/d# export WSLENV=TRANSLATABLE/p root@stranger:/mnt/d# echo $WSLENV TRANSLATABLE/p root@stranger:/mnt/d# cmd.exe Microsoft Windows [版本 10.0.19043.1052] (c) Microsoft Corporation。保留全部权利。 D:\>set TRANSLATABLE # 在windows中查看环境变量 TRANSLATABLE=D:\
/l
表示该值是路径列表(如Linux的PATH)。在Linux中,是以冒号分隔的路径列表。在Win中,是以分号分隔的路径列表。/l
能够将路径列表适当对不通系统进行转换。ui
root@stranger:/mnt/d# export TEMPORARY=/usr/local/go/bin:/usr/local/python/bin root@stranger:/mnt/d# WSLENV=$WSLENV:TEMPORARY/l root@stranger:/mnt/d# echo $WSLENV TRANSLATABLE/p:TEMPORARY/l root@stranger:/mnt/d# cmd.exe Microsoft Windows [版本 10.0.19043.1052] (c) Microsoft Corporation。保留全部权利。 D:\>set TEMPORARY TEMPORARY=\\wsl$\ubuntu1\usr\local\go\bin;\\wsl$\ubuntu1\usr\local\python\bin
/u
表示仅在Linux(WSL)中调用变量的值为 Win 类型的变量值,及windows向Linux传递环境变量,但格式不变
D:\compose>set zhangsan=D:\compose D:\compose>set zhangsan zhangsan=D:\compose D:\compose>set WSLENV=zhangsan/u D:\compose>wsl -d ubuntu1 root@stranger:/mnt/d/compose# echo $zhangsan D:\compose
如须要自动适应转换,则须要 使用
/up
/w
表示仅在从Win调用WSL环境变量是的值,该参数并不会自动转换,如需转换同样须要使用 /wp
。
root@stranger:/mnt/d/compose# export FROMWSL=/mnt/d/compose root@stranger:/mnt/d/compose# export WSLENV=FROMWSL/w root@stranger:/mnt/d/compose# cmd.exe Microsoft Windows [版本 10.0.19043.1052] (c) Microsoft Corporation。保留全部权利。 D:\compose>set FROMWSL FROMWSL=/mnt/d/compose D:\compose>exit root@stranger:/mnt/d/compose# export WSLENV=FROMWSL/wp root@stranger:/mnt/d/compose# cmd.exe Microsoft Windows [版本 10.0.19043.1052] (c) Microsoft Corporation。保留全部权利。 D:\compose>set FROMWSL FROMWSL=D:\compose
若是须要BASH脚本传递对应的变量到windows程序执行,例如
#!/bin/bash export MYPATH=/mnt/c/Users/ WSLENV=$WSLENV:MYPATH/p cmd.exe /c set MYPATH
经过WSL shell环境执行,能够获得windows程序处理的结果,而且能够拿到环境变量
root@stranger:/mnt/d/compose# bash 1.sh MYPATH=C:\Users\
例如,但愿在WSL中设置DEV环境。使用WSLENV VAR,将其配置为在WSL和Win之间共享GoPath。
首先,咱们须要安装两个平台。要在Windows与WSL安装,步骤不说了。(若是是python等解析语言,能够使用alias直接使用windows的解析器则不须要安装了)
接下来,须要配置的GO项目。该项目须要在Windows文件系统下。在PowerShell中发出如下命令:(这里在桌面配置的)
mkdir $env:USERPROFILE\desktop\goProject cd $env:USERPROFILE\desktop\goProject New-Item hello.go
配置环境变量,而后将gopath添加到WSLENV,此时,两个文件系统间,会使用同一个GOPATH
setx GOPATH "$env:USERPROFILE\desktop\goProject" setx WSLENV "$env:WSLENV:GOPATH"/p
须要事项
- WSL(经过.profile或其余)中的定义将在经过WSL访问时覆盖默认WSLENV中定义的值。
- 在关闭WSL后,WSLENV不会持久化,须要修改相应的配置文件(.profile,.bash_rc等)。
- WSL能够设置任何值。若是仅设置当前文件系统变量,则不会自动转换。经过WSLENV能够自动翻译成两种不通的文件系统下的环境变量。
options | describe |
---|---|
/C | 使用cmd.exe运行一个命令并终止,相似于 bash -c |
Reference
更多cmd.exe帮助参考 cmd_helps
WSL备份及windows Docker安装
WSL安装维护