最简易方法判定程序或脚本是否运行在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:

使用下面的函数,检查你的Python程序是否运行在WSL:

 

觉得不错?分享给你的小伙伴:

发表评论