2014-10-23 14 views
53

Come posso eseguire .sh su Windows 7 Prompt dei comandi? Ho sempre trovato questo errore quando provo a fare funzionare questa linea in esso,Come eseguire .sh sul prompt dei comandi di Windows?

app/build/build.sh 

errore,

'app' is not recognized... 

o,

bash app/build/build.sh 

errore,

'bash' is not recognized... 

Qualsiasi idee cosa ho perso?

Ecco la schermata di afferrare, enter image description here

+3

è necessario Cygwin (possibilmente). Stai cercando di eseguire script SHELL (.sh) su Windows e questo è l'unico modo in cui ho eseguito i miei file '.sh' su Windows. – ha9u63ar

risposta

25

Il messaggio di errore indica che non è stato installato bash, o non è nel vostro PATH.

Il primo hit di Google è http://win-bash.sourceforge.net/ ma è anche necessario capire che la maggior parte degli script Bash prevede un ambiente simile a Unix; quindi è improbabile che installare Bash sia sufficiente per eseguire uno script trovato in rete, a meno che non sia stato progettato specificamente per questo particolare scenario di utilizzo. La solita soluzione è https://www.cygwin.com/ ma ci sono molte alternative possibili, a seconda di cosa esattamente si vuole realizzare.

Se Windows non è centrale per lo scenario di utilizzo, l'installazione di un sistema operativo gratuito (forse virtualizzato) potrebbe essere la via più semplice.

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

34

Il modo più comune per eseguire un file .sh sta usando il sh comando:

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

altra buona opzione è l'installazione di CygWin

nel Windows il home si trova in:

C:\cygwin64\home\[user] 

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

[email protected] ~$ bash /home/[user]/my-script-test.sh 
+13

A meno che tu non abbia adottato misure speciali per ottenerlo, non avrai un comando 'sh' su Windows. – user2357112

+0

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

+14

La tua risposta è presentata come se ti aspettassi di poter digitare 'sh' su un comando arbitrario di Windows e farlo funzionare. – user2357112

2

nuova funzionalità di Windows - bash funzionare su ubuntu sulle finestre - disponibile in Windows 10 "addetti ai lavori" costruisce dopo la conferenza Corporatura:

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

+0

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

+0

È possibile eseguire al momento un file .sh su Windows? Non posso provarlo ora ma mi interessa. – JesusMurF

+0

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

53

Installa GIT. Durante l'installazione di GIT, aggiungi GIT Bash al menu di scelta rapida di Windows selezionando la relativa opzione.Dopo l'installazione fare clic destro nella cartella selezionare GIT Bash Here (vedi foto allegata) e utilizzare il comando sh come ad esempio:

sh test.sh 

enter image description here

+0

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

+5

Se è installato GIT, è possibile aggiungere alla variabile di sistema PATH un percorso per 'sh.exe'. Nel mio caso era: 'c: \ Programmi \ Git \ bin'. Quindi esegui 'sh. \ Script.sh' da PowerShell – elshev

+1

Perfetto funziona – raftaar1191

1

In Windows 10 Update Anniversario, è ancora più facile per eseguire comandi di 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 il seguente lavoro per me, usando bash su Ubuntu su Windows, devi abilitare il sottosistema trovato in windows funzioni e modalità sviluppo su

ssh [email protected] < /mnt/c/ccode-eu.sh 
2

è possibile utilizzare anche cmder

Cmder è un pacchetto software creato per pura frustrazione per l'assenza di belle emulatori di console su Windows. Si basa su un software incredibile, e condito con la combinazione di colori Monokai e un layout prompt personalizzato, guardando sexy dall'inizio

Screenshot

cmder.net

+0

Anche se sembra venire con un pacchetto add-on opzionale che include comandi di shell Unix comuni, il pacchetto base sembra essere solo una sostituzione di' cmd'. – tripleee

1

Personalmente ho usato questo file batch, ma richiede CygWin installato (64 bit come mostrato). Basta associare il tipo di file .SH con questo file batch (ExecSH.BAT nel mio caso) 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 this lavoro originale.