Forum: PC-Programmierung Linux Shell Scripte unter Windows


von -gb- (Gast)


Lesenswert?

Mein neues Simulatios-tool wirf mir allerlei *.sh Scripte aus, die unter 
Linux verwendet werden können. Mein netter Chef hat aber nur Windows-PCs 
im Angebot. Wie und mit welchem Support nutzt man die am besten?
Cygwin habe ich gefunden und installiert, er frisst es aber nicht.
Start aus dem Verzeichnis oder auch dem lokalen Script-Verzeichnis wird 
nicht akzeptiert. Das jeweilige file wird angeblich nicht gefunden.

Beispiel:  do_sim.sh  mit do und nur unter Aufruf von do_sim (ohne und 
mit sh) gestartet - keine Reaktion.

Muss das noch irgendwie dem Win bekannt gemacht werden? Braucht es einen 
Pfadeintrag?

Arbeitet jemand mit Shell-Sripten unter Windows?

Wir haben hier noch jemanden, der an dem Problem laboriert und das 
gleiche ausprobiert - ebenfalls ohne Ergebnis. Kann es sein, dass nur 
manche Win-Versionen das unterstützen?

von Sebastian R. (sebastian_r569)


Lesenswert?

G. B. schrieb:
> Wie und mit welchem Support nutzt man die am besten?

Wäre das WSL (Windows-Subsystem für Linux) vielleicht etwas?

von Ein T. (ein_typ)


Lesenswert?

G. B. schrieb:
> Mein neues Simulatios-tool wirf mir allerlei *.sh Scripte aus, die unter
> Linux verwendet werden können. Mein netter Chef hat aber nur Windows-PCs
> im Angebot. Wie und mit welchem Support nutzt man die am besten?
> Cygwin habe ich gefunden und installiert, er frisst es aber nicht.
> Start aus dem Verzeichnis oder auch dem lokalen Script-Verzeichnis wird
> nicht akzeptiert. Das jeweilige file wird angeblich nicht gefunden.

Unter aktuelleren Windows-Systemen soll es von Microsoft das "Windows 
Subsystem for Linux" geben, das allerdings meines Wissens separat 
installiert werden muß. Im Kern soll das ein Ubuntu mit den originalen 
Ubuntu-Paketquellen und -Paketen sein. YMMV, vielleicht weiß hier jemand 
mehr dazu. Alternativ könnte natürlich auch eine VM mit Linux gehen...

von Brax (brax09)


Lesenswert?

Vermutlich ist Dein aktuelles Verzeichniss nicht im Pfad und die Scripte 
werden deshalb nicht gefunden. Abhilfe schafft vermutlich "./do_sim.sh". 
Ob die Scripte laufen - wäre nicht zu zuversichtlich... WSL ist auf 
jedenfall keine schlechte Alternative.

von Andy S. (pneun68)


Lesenswert?

Hallo Georg.

Shell-Skripte laufen unter Cygwin nur in einer cygwin-Kommandozeile, das 
normale Befehlszeilenfenster kann damit nix anfangen.

Eigentlich haette cygwin bei der Installation einen Icon auf dem Desktop 
anlegen müssen mit der Bezeichnung 'Cygwin Terminal' oder 'Cygwin64 
Terminal'. In diesen Kommandozeilenfenstern sollten die Shellskripte 
aufrufbar sein.
Wenn das Shellskript im aktuellen Arbeitsverzeichnis liegt, muss man oft 
ein './' beim Aufruf davorsetzen weil das aktuelle Arbeitsverzeichnis 
traditionell aus Sicherheitsgründen oft nicht im PATH enthalten ist.

Edit:Und natürlich ruft man Shell-skripte mit ihrem vollständigen Namen 
auf, das '.sh' gehört zu diesem Namen dazu.

Freundliche Gruesse aus Hohenlohe
Andy

: Bearbeitet durch User
von Thomas (isarfox)


Lesenswert?

Hallo G.B.,

es gab ja schon einige Empfehlungen für WSL, dass ist vermutlich mit die 
beste Option, allerdings ...

G. B. schrieb:
> Mein neues Simulatios-tool wirf mir allerlei *.sh Skripte aus, die unter
> Linux verwendet werden können.

Es geht aus deiner Aussage nicht so ganz hervor, ob dein magisches Tool 
nur die Linux Skripte auswirft oder auch die entsprechenden Windows 
Skripte, häufig mit der Extension *.bat was unter Windows häufig .. aber 
das ist eine andere  Story. Bzw. zwischen den Zeilen implizierst du, 
dass das "neues Simulatios-tool" in Wirklichkeit zwei Bausteine hat, 
eine GUI in der du die Parameter setzt und entsprechende Shell Skripten 
erzeugst und eine Simulations Engine, die du mit den Skripten fütterst

Das bedeutet du solltest raus finden, ob du das ganze (also die 
entsprechende Simulations-Engine) als Windows oder Linux Version 
installiert hast, und wo, d.h. ob du eventuell auf einen Remote Server 
mit der Engine Installation zugreifen willst. Und das ist ggf. der 
Moment wo du den ITler bei euch fragen musst.

Wenn Windows dann Windows Skript verwenden, das Linux Skript ist eher 
nutzlos.


> Mein netter Chef hat aber nur Windows-PCs im Angebot.

Die Gelegenheit deinen netten Chef um einen etwas kräftigeren PC/Laptop 
mit Linux zu bitten, also etwas kräftiger im Sinne von nahezu das beste 
was Geld kaufen kann. Dann tritt Windows in die Tonne und steig um;)

> Wie und mit welchem Support nutzt man die am besten?

Dem Support des Herstellers! Unter About in der Software die 
Telefonnummer des SW Herstellers herausfinden, anrufen und um die 
Weiterleitung zu einem Support Mitarbeiter bitten, und dem genau die 
Frage stellen.

Manchmal hilft es ja auch schon etwas im Handbuch zu stöbern oder ein 
Tutorial durchzugehen.

> Cygwin habe ich gefunden und installiert, er frisst es aber nicht.
> Start aus dem Verzeichnis oder auch dem lokalen Script-Verzeichnis wird
> nicht akzeptiert. Das jeweilige file wird angeblich nicht gefunden.
>
> Beispiel:  do_sim.sh  mit do und nur unter Aufruf von do_sim (ohne und
> mit sh) gestartet - keine Reaktion.
>
> Muss das noch irgendwie dem Win bekannt gemacht werden? Braucht es einen
> Pfadeintrag?

Unter Linux u.U. das Skript erst mit "chmod a+x *.sh-File" executable 
machen und dann mit ./sh-File im lokale Directory aufmachen oder mit 
Pfadangabe oder mit sh sh-File. Beides geht unter Linux normalerweise, 
aber unter Windows wirst du vermutlich auch mit einem Pfadeintrag nicht 
viel weiter kommen.

Das erwähnte "do" ist ein Windows Befehl, oder? Würde jetzt in erster 
Stufe nicht davon ausgehen, dass es mit *.sh Files umgehen kann.

>
> Wir haben hier noch jemanden, der an dem Problem laboriert und das
> gleiche ausprobiert - ebenfalls ohne Ergebnis. Kann es sein, dass nur
> manche Win-Versionen das unterstützen?

WSL ja nur auf bestimmten Win Versionen, cygwin lieft vermutlich schon 
als Windows noch MSDos hieß, dementsprechend der notwendige Nerd 
Quotient beim Bedienen, aber läuft und VMware oder VBox o.ä. läuft 
eigentlich seit einigen Releases ziemlich gut auf Windows, aber um von 
der VM unter z.B. aus Linux via Script ein Executable unter Windows zu 
triggern - viel Spaß oder in anderen Worten, ist den Aufwand nicht wert.

Gruß
-th-

von Oliver S. (oliverso)


Lesenswert?

Eine bash shell bekommst du auch mit msys2. cycwin muß da nicht sein.

Aber hat denn schonmal jemand in die scripte hineingeschaut, was da drin 
passiert? Denn das alles klingt doch sehr danach, daß das ganze Tool für 
eine Linux-Umgebung gedacht ist, und die scripte unter Windows nur mit 
sehr viel Schmerzen, wenn überhaupt, ans laufen zu bekommen sind.

Wenn WSL(2) keine Option ist, nimm halt eine VM mit Linux.

Oliver

von Rene K. (xdraconix)


Lesenswert?

Ein T. schrieb:
> Im Kern soll das ein Ubuntu mit den originalen Ubuntu-Paketquellen und
> -Paketen sein

Im Kern kann man eigentlich jegliche Linux Distribution installieren.

von -gb- (Gast)


Lesenswert?

Sebastian R. schrieb:
> Wäre das WSL (Windows-Subsystem für Linux) vielleicht etwas?
Genau das ist drauf. Ich bekomme es aber nicht angeworfen.

Brax schrieb:
> Vermutlich ist Dein aktuelles Verzeichniss nicht im Pfad und die Scripte
> werden deshalb nicht gefunden. Abhilfe schafft vermutlich "./do_sim.sh".
Pfade sind eingetragen, läuft aber dennoch nicht.

Andy S. schrieb:
> Shell-Skripte laufen unter Cygwin nur in einer cygwin-Kommandozeile, das
> normale Befehlszeilenfenster kann damit nix anfangen.
>
> Eigentlich haette cygwin bei der Installation einen Icon auf dem Desktop
> anlegen müssen mit der Bezeichnung 'Cygwin Terminal' oder 'Cygwin64
> Terminal'. In diesen Kommandozeilenfenstern sollten die Shellskripte
> aufrufbar sein.

Ja, ist aber nichts zu sehen.

Ich frage mal in einem Linux Forum nach. Danke!

von Philipp K. (philipp_k59)


Lesenswert?

Ich habe auf allen Rechnern immer ein WSL-Debian aus dem Appstore..

da kann man eigentlich alles laufen lassen.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Shell scripte laufen auch in der DOS Eingabeaufforderung (cmd.exe) oder 
Powershell, wenn nan sie so wie alle anderen 3rd party Scripte aufruft. 
In diesem Fall

c:\cygwin\bin\bash.exe meinscript.sh

Oder ohne pfad wenn die PATH Variable entsprechend eingerichtet ist.

Manche Shell scripte erfordern Parameter:

bash.exe -i --login meinscript.sh

Die Powershell hat Probleme mit den Minus Zeichen, aber in der cmd Shell 
klappt das.

von Alexander (alecxs)


Lesenswert?

Dateipfade bereiten Schmerzen. Windows Pfade haben backslash \ und 
komische Präfixe wie /cygdrive/c

von Stefan F. (Gast)


Lesenswert?

Alexander schrieb:
> Windows Pfade haben backslash \

Windows unterstützt seit sehr vielen Jahren auch / im Pfad.

In der CygWin (Bash) Shell dient der Backslash dem Escapen von 
Leerzeichen:

"/cygdrive/c/home/max mustermann/"

oder

cygdrive/c/home/max\ mustermann/

von (prx) A. K. (prx)


Lesenswert?

˙ɟ uɐɟǝʇs schrieb:
> Windows unterstützt seit sehr vielen Jahren auch / im Pfad.

Das war bereits in DOS möglich, soweit es die Systemaufrufe anging.

von Sebastian W. (wangnick)


Lesenswert?

Für Linux Shell-Skripte brauchst du logischerweise mindestens eine 
Linux-Shell. Für welche Shell sind deine Skripte denn geschrieben?

Dazu kommt, dass viele Linux Shell-Skripte weitere Linux Kommandos 
aufrufen, die dann die eigentliche Arbeit machen. Die Cygwin-Umgebung 
und das WSL enthalten viele dieser Kommandos, aber unter Umständen auch 
nicht alle.

Zeig mal so ein Shell-Skript!

LG, Sebastian

von Achim M. (minifloat)


Lesenswert?

-gb- schrieb:
> Start aus dem Verzeichnis oder auch dem lokalen Script-Verzeichnis wird
> nicht akzeptiert. Das jeweilige file wird angeblich nicht gefunden.
> Beispiel:  do_sim.sh  mit do und nur unter Aufruf von do_sim (ohne und
> mit sh) gestartet - keine Reaktion.

Ich glaube, dass das Problem weit trivialer ist...

Angenommen ich habe ein "myscript.sh" in dem Ordner wo ich gerade bin, 
welches als erste Zeile auch den "Shabang" #!/bin/bash enthält:

$ ./myscript.sh {enter}

... und es rennt.

mfg mf

: Bearbeitet durch User
von Christoph Z. (christophz)


Angehängte Dateien:

Lesenswert?

Oliver S. schrieb:
> Eine bash shell bekommst du auch mit msys2. cycwin muß da nicht sein.

Oder Git installieren. Da kommt auch gleich ein msys2 mit. Netterweise 
auch gleich mit Kontextmenueintrag um eine Bash zu öffnen.

Falls du/dein Chef Vivado installiert hast, musst du nichts mehr 
zusätzlich installieren. Da kommt msys2 mit ziemlich vielen tools gleich 
mit (z. B. auch mit make). Guck mal in:
<vivado Installationspfad>\gnuwin\bin
Bei mir z. B. C:\Software\Xilinx\Vivado\2020.2\gnuwin\bin

Dann fügst du diesen zu deiner PATH variablen dazu und schon kannst du 
in CMD make all ausführen :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.