2016-08-09 26 views
15

"Ubuntu on Windows" ile yerel Ubuntu arasında çalışıyor mu? Öyleyse nasıl?"Ubuntu on Windows", bash betiğinden yerel Ubuntu'yu algıla.

Her iki makinede de env koştum ve belirgin çevresel değişken farklılıkları görmedim. /mnt/c dizininin varlığını test edebilirdim, ancak bu dizin güvenilir değildir çünkü bu dizin yerel Ubuntu'da da potansiyel olarak mevcut olabilir.

+0

'uname -a' raporu nedir? –

+0

'uname -a' Windows Ubuntu'dan çıktı: 'Linux BİLGİSAYAR 3.4.0+ # 1 PREEMPT Per 1 Ağustos 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux' – Tim

cevap

21

Windows üzerinde Ubuntu /proc/version gibi içerdiği O görünüyor:

Linux version 3.4.0-Microsoft ([email protected]) (gcc version 4.7 (GCC)) #1 SMP PREEMPT Wed Dec 31 14:42:53 PST 2014

ve Ubuntu benim sürümü vardır:

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

Bu c ode, betiğin hangi Ubuntu sürümünün çalıştığını algılamak için çalışıyor:

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

[Resmi bir kaynaktan] (https://github.com/Microsoft/BashOnWindows/issues/423#issuecomment-221627364): "Microsoft" veya "WSL" dizeleri için '/ proc/version' ya da'/proc/sys/kernel/osrelease 'arama Bunu yapmanın en iyi yolu. – Tim