46

bash 脚本可以检测它是在“Windows 上的 Ubuntu”还是在本机 Ubuntu 中运行?如果是这样,怎么做?

env在两台机器上运行,没有看到任何明显的环境变量差异。我可以测试该/mnt/c目录是否存在,但这并不是万无一失的,因为该目录也可能存在于本机 Ubuntu 上。

4

1 回答 1

72

它看起来像/proc/version在 Windows 上的 Ubuntu 中包含:

Linux version 3.4.0-Microsoft (Microsoft@Microsoft.com) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Wed Dec 31 14:42:53 PST 2014

我的 Ubuntu 版本有:

Linux version 4.4.0-31-generic (buildd@lgw01-16) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1) ) #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016

这段代码可以让我检测脚本在哪个版本的 Ubuntu 上运行:

if grep -q Microsoft /proc/version; then
  echo "Ubuntu on Windows"
else
  echo "native Linux"
fi
于 2016-08-09T19:53:17.277 回答