在我的~/.bashrc
中,我检测到OSTYPE
的运行平台(例如可以是cygwin
)。
我应该如何在Bash中检测WSL?以前我使用过COMSPEC
env var,但是WSL内缺少它...
我更喜欢轻量级检查,而不会产生在WSL / Cygwin中不便宜的外部进程。
答案 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