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安裝維護