Ziemlich geradlinig, die üblichen Orte, um herauszufinden, das Betriebssystem, auf dem Sie sich befinden, scheinen mit Ubuntu auf Ubuntu für Windows identisch zu sein. Zum Beispiel ist uname -a
identisch mit einer nativen GNU/Linux-Installation und /etc/os-version
ist identisch mit einer Ubuntu Trusty Tahr-Installation.Wie kann man überprüfen, ob ein Programm in Bash unter Ubuntu unter Windows und nicht nur in Ubuntu ausgeführt wird?
Das einzige, was ich denken kann, ist zu überprüfen, ob /mnt/c/Windows
existiert, aber ich bin mir nicht sicher, ob das eine idiotensichere Idee ist.
Da die procfs des von Windows emuliert wird, sollte es (im Prinzip, wie auf dem Github Kommentar angegeben) enthält immer diese Zeichenfolge Microsoft, unabhängig von der Verteilung verwendet, so dass der letzte Absatz mir scheint verwirrt. –
@GuillemJover, das hängt davon ab, ob die hypothetische andere Distribution WSL verwendet oder nicht, denke ich. Ich weiß nicht, ob Cygwin diese Funktionalität emuliert, aber wenn es so ist, kann ich mir nicht vorstellen, dass Microsoft das sagen würde. (Obwohl ich denke, die Phrase "Microsoft Windows" könnte in der Zeichenfolge angezeigt werden. Ich wette "[email protected]" wird nicht!) –
@HarryJohnston Unter/Cygwin enthält '/ proc/version' eine Zeichenfolge beginnend mit" CYGWIN_NT " und "/ proc/sys/kernel/osrelease" existiert überhaupt nicht. – duskwuff