Windows 10 的 1709 版里已经在应用商店提供了Ubuntu、SUSE EL 和 openSUSE 三个Linux发行版的Linux 子系统(WSL)。本文提供了一种真的非常简单的方式来判断程序或脚本是否运行在WSL中。
虽然WSL能够兼容很多Linux文本界面的程序,但是有以下的缺点:
- WSL权限管理不与Windows原有权限冲突,但是比Windows的权限低。(即使是使用root)
- 内核层和硬件层受到极大的限制,要进行更改几乎不可能。(init和运行状态不可用,/dev/中也无法对磁盘进行操作。)
- 大多Linux发行版随附的必要软件包,WSL都没有。(gcc、g++、python、vim…)
如何保证你的脚本或程序不支持WSL?很简单:
检测 /mnt/ 下是否有 Windows 挂载的盘符,比如 /mnt/c/、/mnt/d/ …
来些实例吧
添加下面的内容到你的脚本,保证脚本不支持WSL:
if [ -d /mnt/c ]; then
echo "WSL is NOT supported."
exit 1
fi
使用下面的函数,检查你的Python程序是否运行在WSL:
import os
def check_wsl():
return os.path.exists("/mnt/c")