分类
折腾

最简易方法判定程序或脚本是否运行在Windows的Linux子系统(WSL)中

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")

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注