从 bash 脚本中检测 "Ubuntu on Windows" 与本机 Ubuntu
Detect "Ubuntu on Windows" vs native Ubuntu from bash script
bash 脚本可以检测它在 "Ubuntu on Windows" 中是 运行 还是在 Ubuntu 中是 运行?如果是,怎么做?
我 运行 env
在两台机器上都没有看到任何明显的环境变量差异。我可以测试 /mnt/c
目录是否存在,但这并不是万无一失的,因为该目录也可能存在于本机 Ubuntu.
上
Windows 上的 Ubuntu 中的 /proc/version
似乎包含:
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
bash 脚本可以检测它在 "Ubuntu on Windows" 中是 运行 还是在 Ubuntu 中是 运行?如果是,怎么做?
我 运行 env
在两台机器上都没有看到任何明显的环境变量差异。我可以测试 /mnt/c
目录是否存在,但这并不是万无一失的,因为该目录也可能存在于本机 Ubuntu.
Windows 上的 Ubuntu 中的 /proc/version
似乎包含:
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