打击检测WSL

时间:2018-10-15 10:43:34

标签: bash windows-subsystem-for-linux

在我的~/.bashrc中,我检测到OSTYPE的运行平台(例如可以是cygwin)。

我应该如何在Bash中检测WSL?以前我使用过COMSPEC env var,但是WSL内缺少它...

我更喜欢轻量级检查,而不会产生在WSL / Cygwin中不便宜的外部进程。

2 个答案:

答案 0 :(得分:2)

您可以检查/proc/version。在我的计算机上(Win 10 1809),其中包含:

Linux version 4.4.0-17763-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #55-Microsoft Sat Oct 06 18:05:00 PST 2018

答案 1 :(得分:1)

uname 也是一个选项,即

if [[ $(uname -r) =~ WSL ]]; then
    # WSL detected
    <run code>
fi

这种方法是可行的,因为 WSL2 和 WSL1 下的内核版本字符串略有不同。

$ uname -r
5.4.72-microsoft-standard-WSL2