.sh-Dateien unter Windows mit dem bash-interpreter von "Windows Subsystem for Linux" verknüpfen

jmar83

Member
Da gibt's zwar ne "debian.exe" unter dem Benutzerprofil-Ordner (als doofes "App" im Startmenü ersichtlich), aber die weigert sich wenn man .sh-Files damit verknüpfen will.

Unter system32 gibt ne bash.exe, allerdings scheint das eher sonstwas (?) zu sein.

Besser weiter "cygwin" verwenden?

Eigentlich möchte ich nur das Start-SH-Skript für die Zielplattform (Raspbian) bereits unter Windows (Wo ich unter Eclipse das Java-Programm programmiert habe) entwickelt. Aber scheinbar dauert das wieder Tage bis man was vernünftiges hat und dann lässt man es besser bleiben da Zeitaufwand hoch 27...

Aber vielleicht weiss sonst jemand was dazu? Könnte es sein, dass rein die PowerShell-Engine (Ohne dieses "Windows Subsystem for Linux"-Zeugs) in der Lage ist zumindest ne Teilmenge oder Shell/Bash auszuführen?

Danke für die Feedbacks.
 

jmar83

Member
...oder auch nur .sh-Dateien unter Windows mit der powershell oder batch-engine verknüpfen, aber natürlich den bash-header entfernen:

Statt

#!/bin/bash
java -jar ./app.jar



Halt nur

java -jar ./app.jar

(Das würde dann unter Window$ und Linux gleichermassen laufen)

Aber "einfach mal verknüpfen" der .sh-Files mit `psh.exe` (Powershell) resp.`cmd.exe` (Konsole für batches) ist leider nicht unter Windows...

Hätte evtl. jemand einen Tipp?
 

DeaD_EyE

Blog Benutzer
Was für ein Durcheinander. Jedenfalls wäre ein Linux-Server besser geeignet für Shell-Scripts.
Unter Windows sollte man eher PowerShell verwenden.

Es gibt:
  • Cygwin: POSIX kompatibel
  • MSYS2: C/C++ compiler collection; POSIX kompatibel; kann unabhängige ausführbare Windows Programme erstellen
  • WSL: Linux-Subsystem von Microsoft, Distributionen (Debian, Ubuntu und andere) über den App-Store installieren
  • WSL2: Linux-Subsystem, dass im Hypervisor läuft. Dateizugriffe sollen jetzt schneller sein.
Bei MSYS2 kannst du die mingw(32|64).exe mit dem Script starten:
Bash:
 C:\msys64\mingw64.exe /C/Users/Admin/script.sh

Bei Cygwin:
Bash:
C:\cygwin64\bin\bash.exe /cygdrive/c/Users/Admin/script.sh

WSL & WSL2:
Bash:
bash.exe script.sh
Hier habe ich einfach den relativen Pfad genommen.
Die bash.exe ist in C:\WINDOWS\system32\
 

jmar83

Member
Danke fürs Feedback!! :)

Das Windows Subsystem für Linux geht schon mal nicht, konnte dort zwar per "apt-get install ... " die Java Runtimes installieren aber mein Programm ist ne Swing-Anwendung (GUI) und läuft nicht bloss in der Konsole. Somit kein Thema. Ich denke auch nicht, dass man bei WSL (2) irgend ein Linux-Desktop wie GNOME verwenden kann. (?)

Was ich noch herausgefunden habe: das "bash.exe" unter "system" scheint vom WSL (2) zu stammen, reagiert jedenfalls gleich wie wenn ich "Debian" unter den Apps verwende. (z.b. auf `uname -r` oder `cat /etc/issue`...) Man kann wohl unter Win gleichzeitig nur eine Linux-Variante verwenden, deshalb heisst die Datei unter system32 nicht "bash_debian.exe" oder "bash_ubuntu.exe" sondern schlicht nur "bash.exe"..

Aktuell habe ich es, ganz konventionell, über ein .sh sowie ein .bat-File geregelt, halt beide mit ein und derselben Zeile drin: `java -jar ./app.jar` (deswegen meine ursprüngliche Idee..;-))

Werde es dann mal wohl mit "MSYS2" versuchen, mingw64 habe ich ja schon installiert. Cygwin habe ich als relativ kompliziert in Erinnerung. (War aber vor ca. 15 Jahre als ich es das letzte Mal versucht habe einzusetzen, habe dann aber relativ schnell resigniert. Gut, damals hatte ich noch kaum Linux-Kenntnisse..)
 

DeaD_EyE

Blog Benutzer
Ich denke auch nicht, dass man bei WSL (2) irgend ein Linux-Desktop wie GNOME verwenden kann. (?)

Indirekt geht das. Man kann X umleiten, aber ich denke nicht, dass es das ist was du willst.

Aktuell habe ich es, ganz konventionell, über ein .sh sowie ein .bat-File geregelt, halt beide mit ein und derselben Zeile drin: `java -jar ./app.jar` (deswegen meine ursprüngliche Idee..;-))

Ist viel besser!

Werde es dann mal wohl mit "MSYS2" versuchen, mingw64 habe ich ja schon installiert.

Eigentlich wäre das auch überflüssig, da du ja die Java-Runtime auf deinem Windows-Server (Host) bereits eingerichtet hast (denke ich). Es ergibt wenig Sinn wegen eines Scripts eine Umgebung zu installieren, die über 300 MiB groß ist. Speicher spielt zwar heute keine Rolle, aber die Abhängigkeiten sind meist die Sachen, die die Installation verhindern.

Also lieber eine .bat Datei und ggf. noch ein Script für die PowerShell .ps1
 
Top