web-dev-qa-db-ja.com

bashスクリプトから「Ubuntu on Windows」とネイティブUbuntuを検出する

Bashスクリプトは、「Ubuntu on Windows」対ネイティブUbuntuで実行されているかどうかを検出できますか?もしそうなら、どうですか?

私は両方のマシンでenvを実行しましたが、明らかな環境変数の違いはありませんでした。 /mnt/cディレクトリの存在をテストすることもできますが、そのディレクトリがネイティブのUbuntuにも存在する可能性があるため、絶対に確実なわけではありません。

34
Tim

Windows上のUbuntuの_/proc/version_のように見えます:

Linux version 3.4.0-Microsoft ([email protected]) (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
_
46
Tim