如何检查程序是否在 Windows 上的 Ubuntu 上的 Bash 中运行,而不仅仅是普通的 Ubuntu?

2024-04-28

非常简单,确定您所使用的操作系统的通常位置似乎与 Ubuntu for Windows 上的普通 Ubuntu 相同。例如uname -a与本机 GNU/Linux 安装相同并且/etc/os-version与 Ubuntu Trusty Tahr 安装相同。

我唯一能想到的就是检查是否/mnt/c/Windows存在,但我不确定这是否是一个万无一失的想法。


以下内容适用于 Windows 10、macOS 和 Linux 上的 bash:

#!/bin/bash
set -e
if grep -qEi "(Microsoft|WSL)" /proc/version &> /dev/null ; then
    echo "Windows 10 Bash"
else
    echo "Anything else"
fi

您需要检查“Microsoft”和“WSL”这条评论 https://github.com/Microsoft/WSL/issues/423#issuecomment-221627364作者:Ben Hillis,WSL 开发人员:

就目前而言,这可能是最好的方法。我不能 承诺我们永远不会更改这些 ProcFs 文件的内容,但是 我认为我们不太可能将其更改为不这样做的东西 包含“Microsoft”或“WSL”。

/proc/sys/kernel/osrelease
/proc/version

并且应忽略大小写grep。在 WSL2 中,/proc/version给出小写的 microsoft.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查程序是否在 Windows 上的 Ubuntu 上的 Bash 中运行,而不仅仅是普通的 Ubuntu? 的相关文章

随机推荐