在 bash 脚本中,如何判断脚本是在 Ubuntu 纯净版下运行还是在 Windows 的 Linux 子系统下运行?

在 bash 脚本中,如何判断脚本是在 Ubuntu 纯净版下运行还是在 Windows 的 Linux 子系统下运行?

我有一个 bash 脚本(软件项目的端到端集成测试),在运行时我想知道系统是纯 Ubuntu 安装、MacOS 安装还是在 Linux 的 Windows 子系统中运行的 bash?我该怎么做?

答案1

使用 检查当前正在运行的内核uname -r。在 WSL 中,它将以“-Microsoft”为后缀,例如:4.4.0-17763-Microsoft (debian WSL)。在 Linux 中,它看起来像“4.19.42-v7+”,在 macOS 中它有一个 darwin 指示符。

例如:

if uname -r | grep -q "Microsoft"
then
    do something
fi

查看uname --help更多选项。

相关内容