Обнаружить "Ubuntu on Windows" и родной Ubuntu от bash script

Может ли bash script определить, работает ли он в "Ubuntu on Windows" по сравнению с родным Ubuntu? Если да, то как?

Я запускал env на обеих машинах и не видел никаких очевидных различий в переменных переменных среды. Я мог проверить существование каталога /mnt/c, но это не является надежным, потому что этот каталог потенциально может присутствовать и на родном Ubuntu.

Ответы

Ответ 1

Похоже, что /proc/version в Ubuntu на Windows содержит:

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 ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1) ) #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016

Этот код работает для меня, чтобы определить, какая версия Ubuntu script работает:

if grep -q Microsoft /proc/version; then
  echo "Ubuntu on Windows"
else
  echo "native Linux"
fi