启动wsl的多种方式:
[distro] ie ubuntu
wsl.exe or bash.exe
wsl [command] or bash -c [command]
Windows命令和Linux命令的融合:
windows中访问linux命令:
wsl中直接访问Windows的程序:
Windows的path会自动添加了wsl的PATH中的,只要可执行文件名带上 .exe 就会直接执行windows的命令的;如果当前的工作目录只存在于wsl中,则windows程序会fallback到c:\temp
不过,也可以通过如下方式,机制wsl中调起Windows程序:
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
1
echo0>/proc/sys/fs/binfmt_misc/WSLInterop
或者通过wsl.conf来配置:
/etc/wsl.conf
[interop]
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true
1
2
3
[interop]
enabled=false# enable launch of Windows binaries; default is true
appendWindowsPath=false# append Windows path to $PATH variable; default is true
通过 wslconfig.exe 来配置默认的Linux子系统
修改成中文,需要子系统中安装中文包,如:
sudo apt-get install language-pack-zh-hans
1
sudoapt-getinstalllanguage-pack-zh-hans
然后再:
sudo update-locale LANG=zh_CN.UTF-8
1
sudoupdate-localeLANG=zh_CN.UTF-8
限制:
Windows程序不允许直接修改wsl内部的文件(可能根本就看不见)
Ubuntu子系统的安装位置:
%HOMEPATH%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
1
%HOMEPATH%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
Ubuntu子系统根目录:
%HOMEPATH%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
1
%HOMEPATH%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
注意:
Windows升级后可能会禁用wsl,导致wsl无法使用,解法:powershell管理员权限中执行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
1
Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux
注:这个就是【启用或关闭windows功能】中开启【适用于Linux的Windows子系统】的命令行用法
wsl 子系统中手动mount windows上的目录:
sudo mount -t drvfs C: /mnt/c -o metadata
1
sudomount-tdrvfsC:/mnt/c-ometadata
这样挂载的属主用户是root,可以通过-o来指定目录权限,用户id、组id:
sudo mount -t drvfs C: /mnt/c -o metadata,umask=22,uid=1000,gid=1000
1
sudomount-tdrvfsC:/mnt/c-ometadata,umask=22,uid=1000,gid=1000
自动启动WSL:(设置一个开机或用户登录windows时触发执行的计划任务就行了)
注意: 计划任务可能有电源相关的条件,如果没有插电(只用电池),计划任务是不执行的,如果插电了,计划任务就立即触发了
参考: