Come eseguire .sh sul prompt dei comandi di Windows?


132

Come posso eseguire .sh sul prompt dei comandi di Windows 7? Ottengo sempre questo errore quando provo a eseguire questa riga al suo interno,

app/build/build.sh

errore,

'app' is not recognized...

o,

bash app/build/build.sh

errore,

'bash' is not recognized...

Qualche idea cosa mi sono perso?

Qui lo schermo prende, inserisci qui la descrizione dell'immagine


6
hai bisogno di Cygwin (possibilmente). Stai cercando di eseguire script SHELL (.sh) su Windows e questo è l'unico modo in cui ho eseguito i miei .shfile su Windows.
ha9u63ar,

Risposte:


54

Il messaggio di errore indica che non è stato installato basho che non è presente nel proprioPATH .

Il massimo successo di Google è http://win-bash.sourceforge.net/ ma devi anche capire che la maggior parte degli script di Bash si aspetta un ambiente simile a Unix; quindi è probabile che l'installazione di Bash non ti consenta di eseguire uno script che hai trovato in rete, a meno che non sia stato progettato specificamente per questo particolare scenario di utilizzo. La solita soluzione a questo è https://www.cygwin.com/ ma ci sono molte possibili alternative, a seconda di cosa esattamente si vuole realizzare.

Se Windows non è fondamentale per lo scenario di utilizzo, l'installazione di un sistema operativo gratuito (forse virtualizzato) potrebbe essere il modo più semplice di procedere.

Il secondo messaggio di errore è dovuto al fatto che Windows accetta nominalmente la barra diretta come separatore di directory, ma in questo contesto viene interpretato come separatore di switch. In altre parole, Windows analizza la riga di comando come app /build /build.sh(o, per parafrasare con le convenzioni delle opzioni Unix, app --build --build.sh). Potresti provareapp\build\build.sh ma è improbabile che funzioni, a causa delle circostanze descritte sopra.


1
Ovviamente, con Windows 10, puoi abilitare WSL e quasi avere un vero computer all'interno di Windows.
triplo

147

Installa GIT . Durante l'installazione di GIT, aggiungi GIT Bash al menu contestuale di Windows selezionando la sua opzione. Dopo l'installazione, fai clic con il pulsante destro del mouse nella cartella e seleziona GIT Bash Here(vedi foto allegata) e usa il tuo comando sh come ad esempio:

sh test.sh

inserisci qui la descrizione dell'immagine


1
Non funziona per me. Si apre una finestra del prompt dei comandi che si chiude rapidamente.
desbest

27
Se hai installato GIT, puoi aggiungere alla variabile di sistema PATH un percorso a sh.exe. Nel mio caso è stato: c:\Program Files\Git\bin. Quindi eseguire sh .\script.shda PowerShell
elshev il

1
Questo funziona per me come un incantesimo in Windows 10 nel 2020! Anche se il comando copia / incolla non funziona per me in quanto impostato fisso su ctrl-inseshift-ins
Nam G VU

51

Il modo più comune per eseguire un file .sh è usare il comando sh :

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

altra buona opzione è l'installazione di CygWin

in Windowsla homesi trova in:

C:\cygwin64\home\[user]

ad esempio eseguo il mio my-script-test.shfile usando il comando bash come:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 

43
A meno che tu non abbia preso misure speciali per ottenerlo, non avrai un shcomando su Windows.
user2357112 supporta Monica il

1
Ok -1, vuoi dire che devo aggiungere un tutorial per avere accesso a sh dalla riga di comando ???
Jorgesys,

41
La tua risposta è presentata come se ti aspettassi di poter digitare shsu un prompt dei comandi di Windows arbitrario e farlo funzionare.
user2357112 supporta Monica il

msys2 è un buon posto per ottenere il comando sh. Dai un'occhiata a github.com/userzimmermann/MSYS2-cmd se vuoi usarlo con cmd
Aralox,

3
Bash e il shcomando vengono installati con Git4Windows se si seleziona l'opzione di installazione 'Installa Bash'.
Joel Ellis,

13

puoi usare anche cmder

Cmder è un pacchetto software creato per pura frustrazione per l'assenza di simpatici emulatori console su Windows. È basato su un software straordinario e arricchito con la combinazione di colori Monokai e un layout di prompt personalizzato, che sembra sexy dall'inizio

Immagine dello schermo

cmder.net


1
Sebbene sembri venire con un pacchetto aggiuntivo opzionale che include i comandi comuni della shell Unix, il pacchetto base sembra essere solo una sostituzione cmd.
Tripleee,

5

In Windows 10 Anniversary Update, è ancora più semplice eseguire comandi shell in / con bash su Ubuntu su Windows

Stavo cercando di impostare la mia regione per il mio router netgear x-wrt r7000, ho trovato quanto segue funzionava per me, usando bash su Ubuntu su Windows, devi abilitare il sottosistema trovato nelle funzionalità di Windows e la modalità dev su

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh

Può correre. Ma è un ambiente completamente diverso.
TamusJRoyce,

4

Nuova funzionalità in Windows - esegui bash su Ubuntu su Windows - disponibile nelle build "Insiders" di Windows 10 dopo la conferenza Build:

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


Fantastico, ma come si esegue un shfile con bash? Se provo a farlo, la finestra lampeggia e scompare. Se trascino il file in una finestra bash aperta, si dice che il percorso non è stato trovato (perché utilizza una convenzione diversa).
m93a,

È possibile al giorno d'oggi eseguire un file .sh su Windows? Non posso provarlo ora ma mi interessa.
JesusMurF

1
Non l'ho provato da solo, ma c'è una guida di Microsoft su come eseguire sh su windows: docs.microsoft.com/en-us/windows/wsl/install-win10
claudiu.nicola

@ m93a In una finestra del terminale Ubuntu, bash path/to/scriptesegue lo script. C'è sicuramente anche shin Ubuntu. Se lo script ha un shebang e permessi adeguati, semplicemente path/to/scriptlo eseguirà con l'interprete specificato nel shebang.
triplo

4

Personalmente ho usato questo file batch, ma richiede CygWin installato (64 bit come mostrato). Basta associare il tipo di file .SH a questo file batch (nel mio caso ExecSH.BAT) e si può fare doppio clic su .SH e viene eseguito.

@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% %*'

Basato su questo lavoro originale.


0

Uso la shell Bash di Windows 10 alias Linux Sottosistema alias Ubuntu in Windows 10 come guidato qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.