Dość proste, zwykłe miejsca, w których można się zorientować, że system operacyjny, na którym się znajdujesz, wydaje się identyczny z prostym Ubuntu w systemie Ubuntu dla systemu Windows. Na przykład uname -a
jest identyczny z rodzimą instalacją GNU/Linux, a /etc/os-version
jest identyczna z instalacją Ubuntu Trusty Tahr.Jak sprawdzić, czy program jest uruchamiany w Bash w systemie Ubuntu w systemie Windows, a nie w zwykłym Ubuntu?
Jedyne, co mogę wymyślić, to sprawdzić, czy istnieje /mnt/c/Windows
, ale nie jestem pewien, czy to niezawodny pomysł.
Ponieważ procfs jest emulowane przez system Windows, to powinien (co do zasady, jak podano w komentarzu GitHub) zawsze zawierają te ciągi Microsoft, niezależnie od stosowanej dystrybucji, więc ostatni akapit wydaje mi się mylić. –
@GuillemJover, to zależy od tego, czy hipotetyczny inny rozkład używa WSL czy nie, tak myślę. Nie wiem, czy Cygwin emuluje tę funkcjonalność, ale jeśli tak, to nie wyobrażam sobie, że powiedziałoby to Microsoft. (Chociaż wydaje mi się, że w napisie może pojawić się wyrażenie "Microsoft Windows". Założę się, że "[email protected]" nie będzie!) –
@HarryJohnston Pod Cygwin, '/ proc/version' zawiera ciąg zaczynający się od" CYGWIN_NT " , a '/ proc/sys/kernel/osrelease' w ogóle nie istnieje. – duskwuff