2016-06-28 13 views
11

かなり簡単、あなたがにしているOSを把握するために、通常の場所は、Windows用のUbuntuの上で無地のUbuntuと同じように見えます。たとえばuname -aは、ネイティブGNU/Linuxインストールと同じです。/etc/os-versionは、Ubuntu Trusty Tahrインストールと同じです。私は考えることができるプログラムがWindows上のUbuntuでBashで実行されているかどうかを確認するにはどうすればいいですか?

唯一のものは/mnt/c/Windowsが存在するかどうかを確認することですが、私はそれは誰にでもアイデアだかはわかりません。

答えて

5

私もいることを検出する方法を探してきました。

  • /proc/sys/kernel/osreleaseこれまでのところ私が見つけた2

      は、 "3.4.0-マイクロソフト"

    • /proc/versionは、Linux版」である3.4.0-マイクロソフト ([email protected])(gccのバージョンSMP PREEMPT 水曜日12月31日午後2時42分53秒PST 2014" 4.7(GCC))#1

    あなただけのデフォルトでインストールUbuntuディストリビューションを使用する場合はthey said that it would be unlikely for them to set either to something that doesn't contain "Microsoft" or "WSL"として、それらを使用して問題はありません。

    しかし、別のLinuxディストリビューションをインストールする場合、ディストリビューションはMicrosoftによってコンパイルされていないため、/proc/sys/kernel/osrelease/proc/versionの内容が変更されることは間違いありません。

  • +0

    は、それは常に、関係なく、使用分布、それらのマイクロソフトの文字列が含まれている必要があります。 –

    +1

    @GuillemJover、これは、仮想の他のディストリビューションがWSLを使用しているかどうかによって異なります。私はCygwinがその機能をエミュレートしているかどうかはわかりませんが、もしそうであれば、私はそれがマイクロソフトを言うとは思いません。 Cygwinの下で –

    +0

    @HarryJohnston(私は句の「Microsoft Windows」は、文字列で表示されることがあります。私は、「[email protected]」うではない!賭ける思いますが)、 '/ procの/ VERSION'は「CYGWIN_NT」で始まる文字列が含まれています、 '/ proc/sys/kernel/osrelease'はまったく存在しません。 – duskwuff

    10

    のWindows 10、MacOSの、およびLinux上のbashで、次の作品:

    #!/bin/bash 
    set -e 
    if grep -qE "(Microsoft|WSL)" /proc/version &> /dev/null ; then 
        echo "Windows 10 Bash" 
    else 
        echo "Anything else" 
    fi 
    

    あなたは、 "マイクロソフト" とベン・ヒリス、WSLの開発者this commentあたりの "WSL" の両方をチェックする必要があります。

    これはおそらくこれを実行する最良の方法です。私は 我々はこれらのprocfsファイルの内容を変更することは決してないだろう約束、しかし 私はそれが我々が は、「マイクロソフト」または「WSL」が含まれていない何かに変更しますそうだと思うことはできません。

    /proc/sys/kernel/osrelease 
    /proc/version 
    
    1

    私はただの$ PATHにいくつかのWSL項目を追加するための私の.bashrcのために、この思い付きました。 1703わからない場合は、以前のバージョンで

    作品。 procfsのは、Windowsでエミュレートされているので(Githubのコメントで述べたように、原理的には、)最後の段落は私に混乱しているようだので

    if [[ $(uname -r) =~ Microsoft$ ]]; then 
        foo 
    fi 
    
    関連する問題