Wie führe ich .sh an der Windows-Eingabeaufforderung aus?

132

Wie kann ich .sh unter Windows 7-Eingabeaufforderung ausführen? Ich erhalte immer diesen Fehler, wenn ich versuche, diese Zeile darin auszuführen.

app/build/build.sh

Error,

'app' is not recognized...

oder,

bash app/build/build.sh

Error,

'bash' is not recognized...

Irgendwelche Ideen, was ich vermisst habe?

Hier der Screen Grab, Geben Sie hier die Bildbeschreibung ein

Laukok
quelle
6
Du brauchst Cygwin (möglicherweise). Sie versuchen, SHELL (.sh) -Skripte unter Windows auszuführen, und nur so kann ich meine .shDateien unter Windows ausführen .
ha9u63ar

Antworten:

54

Die Fehlermeldung zeigt an, dass Sie nicht installiert bashhaben oder sich nicht in Ihrem befinden PATH.

Der Top-Hit von Google ist http://win-bash.sourceforge.net/, aber Sie müssen auch verstehen, dass die meisten Bash-Skripte eine Unix-ähnliche Umgebung erwarten. Daher ist es wahrscheinlich unwahrscheinlich, dass Sie mit der Installation von Bash ein Skript ausführen können, das Sie im Internet gefunden haben, es sei denn, es wurde speziell für dieses spezielle Verwendungsszenario entwickelt. Die übliche Lösung hierfür ist https://www.cygwin.com/, aber es gibt viele mögliche Alternativen, je nachdem, was genau Sie erreichen möchten.

Wenn Windows für Ihr Nutzungsszenario nicht von zentraler Bedeutung ist, ist die Installation eines kostenlosen Betriebssystems (möglicherweise virtualisiert) möglicherweise der einfachste Weg.

Die zweite Fehlermeldung ist darauf zurückzuführen, dass Windows den Schrägstrich nominell als Verzeichnistrennzeichen akzeptiert, in diesem Zusammenhang jedoch als Schaltertrennzeichen interpretiert wird. Mit anderen Worten, Windows analysiert Ihre Befehlszeile als app /build /build.sh(oder, um es mit Unix-Optionskonventionen zu paraphrasieren, app --build --build.sh). Sie könnten es versuchen, app\build\build.shaber es ist aufgrund der oben beschriebenen Umstände unwahrscheinlich, dass es funktioniert.

Tripleee
quelle
1
Natürlich können Sie mit Windows 10 die WSL aktivieren und haben fast einen echten Computer in Ihrem Windows.
Tripleee
147

Installieren Sie GIT . Fügen Sie während der Installation von GIT GIT Bash zum Windows-Kontextmenü hinzu, indem Sie dessen Option auswählen. Nach der Installation klicken Sie mit der rechten Maustaste in Ihren Ordner, wählen Sie GIT Bash Here(siehe beigefügtes Bild) und verwenden Sie Ihren Befehl sh wie zum Beispiel:

sh test.sh

Geben Sie hier die Bildbeschreibung ein

Faisal Mq
quelle
1
Es funktioniert nicht bei mir. Ein Eingabeaufforderungsfenster wird geöffnet und dann schnell geschlossen.
Desbest
27
Wenn Sie GIT installiert haben, können Sie der PATH-Systemvariablen einen Pfad hinzufügen sh.exe. In meinem Fall war es : c:\Program Files\Git\bin. Dann laufen Sie sh .\script.shvon PowerShell
elshev
1
Das funktioniert für mich wie ein Zauber in Windows 10 im Jahr 2020! Obwohl der Befehl zum Kopieren / Einfügen bei mir nicht funktioniert, da er auf ctrl-insundshift-ins
Nam G VU
51

Die häufigste Methode zum Ausführen einer .sh- Datei ist der Befehl sh :

C:\>sh my-script-test.sh 

Eine andere gute Option ist die Installation von CygWin

in Windowsder homebefindet sich in:

C:\cygwin64\home\[user]

Zum Beispiel führe ich meine my-script-test.shDatei mit dem Befehl bash aus als:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 
Jorgesys
quelle
43
Wenn Sie keine besonderen Maßnahmen ergriffen haben, erhalten Sie unter shWindows keinen Befehl.
user2357112 unterstützt Monica
1
Ok -1, Meinst du, ich muss ein Tutorial hinzufügen, um über die Kommandozeile auf sh zugreifen zu können ???
Jorgesys
41
Ihre Antwort wird so shangezeigt, als ob Sie erwarten, an einer beliebigen Windows-Eingabeaufforderung eingeben zu können und sie funktionieren zu lassen.
user2357112 unterstützt Monica
msys2 ist ein guter Ort, um den Befehl sh zu erhalten. Überprüfen Sie github.com/userzimmermann/MSYS2-cmd, wenn Sie es mit
cmd verwenden
3
Bash und der shBefehl werden mit Git4Windows installiert, wenn Sie die Installationsoption 'Bash installieren' auswählen.
Joel Ellis
13

Sie können auch cmder verwenden

Cmder ist ein Softwarepaket, das aus purer Frustration über das Fehlen netter Konsolenemulatoren unter Windows erstellt wurde. Es basiert auf einer erstaunlichen Software und wurde mit dem Monokai-Farbschema und einem benutzerdefinierten, prompten Layout aufgewertet, das von Anfang an sexy aussieht

Bildschirmfoto

cmder.net

Vipmaa
quelle
1
Obwohl es mit einem optionalen Add-On-Paket zu kommen scheint, das allgemeine Unix-Shell-Befehle enthält, scheint das Basispaket nur ein Ersatz für zu sein cmd.
Tripleee
5

Unter Windows 10 Anniversary Update ist es noch einfacher, Shell-Befehle in / mit bash auf Ubuntu unter Windows auszuführen

Ich habe versucht, meine Region für meinen x-wrt r7000-Netgear-Router festzulegen. Ich habe festgestellt, dass Folgendes für mich funktioniert: Wenn Sie Bash auf Ubuntu unter Windows verwenden, müssen Sie das in den Windows-Funktionen enthaltene Subsystem aktivieren und den Dev-Modus aktivieren

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
SignedAdam
quelle
Kann laufen. Aber es ist eine ganz andere Umgebung.
TamusJRoyce
4

Neue Funktion in Windows - Bash unter Ubuntu unter Windows ausführen - verfügbar in Windows 10 "Insider" -Erstellungen nach der Build-Konferenz:

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/

claudiu.nicola
quelle
Cool, aber wie läuft eine shDatei mit bash? Wenn ich es versuche, blinkt das Fenster einfach und verschwindet. Wenn ich die Datei per Drag & Drop in ein geöffnetes Bash-Fenster ziehe, wird angezeigt, dass der Pfad nicht gefunden wurde (da eine andere Konvention verwendet wird).
M93a
Ist es heutzutage möglich, eine .sh-Datei unter Windows auszuführen? Ich kann es jetzt nicht versuchen, aber ich bin interessiert an.
JesusMurF
1
Ich habe es selbst nicht ausprobiert, aber es gibt eine Anleitung von Microsoft zum Ausführen von sh unter Windows: docs.microsoft.com/en-us/windows/wsl/install-win10
claudiu.nicola
@ m93a Führt in einem Ubuntu-Terminalfenster bash path/to/scriptdas Skript aus. Es gibt sicherlich auch shin Ubuntu. Wenn das Skript über einen ordnungsgemäßen Shebang und Berechtigungen verfügt, path/to/scriptwird es einfach mit dem im Shebang angegebenen Rnterpreter ausgeführt.
Tripleee
4

Persönlich habe ich diese Batch-Datei verwendet, aber dafür muss CygWin installiert sein (64-Bit wie gezeigt). Verknüpfen Sie einfach den Dateityp .SH mit dieser Batchdatei (in meinem Fall ExecSH.BAT), und Sie können auf die .SH doppelklicken, und sie wird ausgeführt.

@echo off
setlocal

if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof

set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof

:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A

:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%;  %_CYGSCRIPT% %*'

Basierend auf dieser Originalarbeit.

Anonymouse
quelle
0

Ich verwende die Windows 10 Bash Shell alias Linux Subsystem alias Ubuntu in Windows 10, wie hier beschrieben

Nam G VU
quelle