启动wsl的多种方式:
-
[distro]
ieubuntu
wsl.exe
orbash.exe
wsl [command]
orbash -c [command]
Windows命令和Linux命令的融合:
windows中访问linux命令:
wsl中直接访问Windows的程序:
Windows的path会自动添加了wsl的PATH中的,只要可执行文件名带上 .exe 就会直接执行windows的命令的;如果当前的工作目录只存在于wsl中,则windows程序会fallback到c:\temp
不过,也可以通过如下方式,机制wsl中调起Windows程序:
1 |
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop |
或者通过wsl.conf来配置:
/etc/wsl.conf
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子系统
修改wsl中的language: https://docs.microsoft.com/zh-cn/windows/wsl/faq#how-do-i-change-the-display-language-of-wsl
修改成中文,需要子系统中安装中文包,如:
1 |
sudo apt-get install language-pack-zh-hans |
然后再:
1 |
sudo update-locale LANG=zh_CN.UTF-8 |
限制:
- Windows程序不允许直接修改wsl内部的文件(可能根本就看不见)
Ubuntu子系统的安装位置:
1 |
%HOMEPATH%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc |
Ubuntu子系统根目录:
1 |
%HOMEPATH%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs |
注意:
- Windows升级后可能会禁用wsl,导致wsl无法使用,解法:powershell管理员权限中执行:
1Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
注:这个就是【启用或关闭windows功能】中开启【适用于Linux的Windows子系统】的命令行用法
wsl 子系统中手动mount windows上的目录:
1 |
sudo mount -t drvfs C: /mnt/c -o metadata |
这样挂载的属主用户是root,可以通过-o来指定目录权限,用户id、组id:
1 |
sudo mount -t drvfs C: /mnt/c -o metadata,umask=22,uid=1000,gid=1000 |
自动启动WSL:(设置一个开机或用户登录windows时触发执行的计划任务就行了)
注意: 计划任务可能有电源相关的条件,如果没有插电(只用电池),计划任务是不执行的,如果插电了,计划任务就立即触发了
参考: https://dev.to/ironfroggy/wsl-tips-starting-linux-background-services-on-windows-login-3o98
参考:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config