Risposte:
Sei su Windows CMD.EXE (dal messaggio di errore). Utilizza una sintassi diversa per eseguire i comandi. Dovrai utilizzare sh name.sh
, supponendo che tu abbia Cygwin o simili installati.
Per chiarire, Windows non ha un'utilità integrata per supportare i file .sh. Per eseguirlo, devi installare uno strumento di terze parti come Cygwin .
Stai tentando di eseguire un comando Linux dal prompt dei comandi di Windows.
Su Linux la barra rovesciata è un separatore di percorso. Su Windows la barra rovesciata è un separatore di percorso e la barra in avanti indica generalmente un argomento.
Pertanto, Windows pensa che tu stia tentando di eseguire un comando chiamato "." e analizzandolo l'argomento "/name.sh". La convenzione corretta sarebbe ". \ Name.sh". Inoltre, Windows cercherà automaticamente nella directory corrente il tuo comando in modo da poter digitare "name.sh".
Il prossimo problema che dovrai affrontare è che Windows non sa cosa sia uno script sh, anche questa è una cosa Linux. È possibile risolvere questo problema installando Cygwin se si desidera o è necessario eseguire uno script sh.
Tuttavia, a giudicare da uno dei tuoi precedenti commenti, puoi anche rinominare lo script in name.bat ed eliminare la riga "#! / Bin / sh". Ora hai un file batch che Windows dovrebbe capire. Puoi leggere di più sui file batch qui .
Scarica e installa .git per Windows
Fare clic destro sul desktop e dire "git bash qui"
Esegui il tuo script come in unix
Fatto!
Attenzione: molti comandi non funzionano su Windows! Tuttavia, funzioneranno molte delle cose di base.
Se hai bisogno di quello script regolarmente potresti voler creare un collegamento (sul tuo desktop ad es.):
Creare un collegamento per mintty.exe
il tuo desktop
Modifica le proprietà del collegamento e modifica l'obiettivo (mantieni il percorso):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Stai cercando di far funzionare la tua auto con succo d'arancia anziché benzina. Windows condivide comandi simili memorizzati in file .bat o .cmd con gli script della shell Unix / Linux / zOS Unix Subsystem / * ix poiché queste due famiglie di sistemi operativi condividono un antenato comune delle macchine DEC PDP-x.
Se vuoi una gratificazione immediata, dovrai installare un ambiente che fornisca un programma "sh.exe" o "csh.exe" o "bash.exe" (tsh.exe qualcuno?)
In alternativa, se conosci molto bene i comandi di script Unix e conosci i comandi dei file .cmd e .bat di Windows, puoi tradurre il file .sh in un file .bat o .cmd. Anche così, incontrerai spesso più programmi in stile Unix che non hanno equivalenti in Windows - grep, sed, vi, emacs, ecc. Quindi, la chiamata per installare CygWin (non minimalista) - solo per ottenere la shell e Unix utensili. Mettilo su un'unità flash, per queste occasioni speciali.
Qualcuno ha detto qualcosa su MS-DOS usando /
per comandi e \
percorsi. Questo è leggermente fuorviante. Guarda il mio esempio:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Non ha alcuna differenza nell'effetto. Sì, non è vero per tutte le operazioni: la risposta effettiva è semplicemente No , o senza Cygwin o SSHD non è possibile.
Io so solo perché ho stupidamente trascorso una mezza giornata cercando di capire che cosa if then fi
e eval
, exec
faccio con -Djava.something
quando viene chiamato.
Usa Github per Windows. Contiene tutti i file eseguibili dell'ambiente Unix.
Ho trovato una soluzione diversa e semplice, chiamata UnixUtil .
Scarica e decomprimilo su C: drive. Imposta la variabile d'ambiente path
da includere C:\UnixUtils\usr\local\wbin
.
Questo è importante. NON impostare il percorso suC:\UnixUtils\bin
Per completezza, desidero menzionare una nuova funzionalità "Sottosistema Windows per Linux" per Windows 10. I dettagli sono descritti in http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- bash-shell-on-finestre-10 /
Si noti che è necessario attivare l'opzione "Modalità sviluppatore" e abilitare l'opzione "Sottosistema Windows per Linux (Beta)".
Per quanto mi riguarda, ho scoperto che l'installazione di Git per Windows (che sto usando comunque) è sufficiente.
Questo è un vecchio thread ma per quelli che eseguono Windows 10. Basta aprire le funzionalità di Windows dal pannello di controllo 'Attiva o Disattiva funzionalità di Windows'
Scegli la funzione "Sottosistema Windows per Linux". Dopo l'installazione, hai "Bash" e puoi persino configurare server Linux nativi in bash. E ovviamente, anche il comando sh, all'interno di bash, funziona.
È possibile che il problema sia effettivamente all'interno del file name.sh
: stai tentando di utilizzare il .
comando ma sta tentando di eseguire un tipo di shell (ad esempio, csh
penso) in cui non è un comando valido.
Quindi: name.sh
inizia con il corretto #!/bin/sh
(se stai effettivamente cercando di eseguire sh
)?
ok, c'è MOLTO sbagliato in questo - lascia cadere #! / bin / sh e cambia l'estensione in bat, e potrebbe funzionare con qualche altra correzione. Quindi puoi semplicemente invocarlo anche con il suo nome file.
La sintassi di uno script shell unix e un file batch di Windows non sono troppo simili. cygwin o un sacco di problemi con unxutils potrebbero creare qualcosa che funzionerebbe in entrambi, ma a meno che tu non sia ASSOLUTAMENTE sicuro che l'ambiente sia sempre lo stesso, non vale la pena mal di testa
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
Che cosa?! Sospetto che tu non l'abbia mai provato ... Su Windows, anche le funzionalità bash più semplici non sono supportate o richiedono una sintassi prolungata.
Se hai una scatola Linux a casa (o al lavoro) e collegata alla stessa rete e questa rete è sicura, questo potrebbe fare il trucco:
mount //WinMachine/Share LinuxFolder
(IIRC e richiede Samba ).Per eseguire lo script della shell da Windows. Per prima cosa usa il comando: dos2unix quindi puoi usare il tuo normale comando: sh runide.sh
Questo funzionerà.
Anche se le risposte esistenti qui erano corrette al momento, Windows 10 non includono ora opzionalmente una versione modificata di Ubuntu in esecuzione una shell bash completa .
Una volta resi eseguibili, gli script possono essere eseguiti come al solito da bash, ad esempio:
chmod +x myscript.sh
./myscript.sh
Se si desidera eseguire uno script direttamente da Windows, è possibile creare un collegamento nella stessa directory e impostare "Destinazione" su qualcosa del tipo:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Se il percorso dello script è relativo alla posizione del collegamento (come nell'esempio sopra), assicurarsi che anche il campo "Avvia in" sia vuoto.