web-dev-qa-db-fra.com

Comment exécuter .sh sur l'invite de commande Windows?

Comment puis-je exécuter .sh sur l'invite de commande Windows 7? Je reçois toujours cette erreur lorsque j'essaie d'exécuter cette ligne,

app/build/build.sh

erreur,

'app' is not recognized...

ou,

bash app/build/build.sh

erreur,

'bash' is not recognized...

Des idées que j'ai manqué?

Voici la capture d'écran, enter image description here

105
laukok

Le message d'erreur indique que vous n'avez pas installé bash, ou que ce n'est pas dans votre PATH.

Le hit Google le plus populaire est http://win-bash.sourceforge.net/ mais vous devez également comprendre que la plupart des scripts Bash attendent un environnement de type Unix; il est donc peu probable que le simple fait d’installer Bash vous permette d’exécuter un script que vous avez trouvé sur le réseau, sauf s’il a été spécialement conçu pour ce scénario d’utilisation particulier. La solution habituelle à cela est https://www.cygwin.com/ mais il existe de nombreuses alternatives possibles, en fonction de ce que vous voulez accomplir.

Si Windows n’est pas au cœur de votre scénario d’utilisation, l’installation d’un système d’exploitation gratuit (peut-être virtualisé) peut constituer la solution la plus simple.

Le deuxième message d'erreur est dû au fait que Windows accepte nominalement la barre oblique en tant que séparateur de répertoire, mais dans ce contexte, il est interprété comme un séparateur de commutateur. En d'autres termes, Windows analyse votre ligne de commande en tant que app /build /build.sh (ou, pour paraphraser avec les conventions d'option Unix, app --build --build.sh). Vous pouvez essayer app\build\build.sh mais il est peu probable que cela fonctionne, en raison des circonstances décrites ci-dessus.

49
tripleee

Installez GIT . Lors de l’installation de GIT, ajoutez GIT Bash au menu contextuel de Windows en sélectionnant son option. Après l'installation, cliquez avec le bouton droit de la souris sur votre dossier et sélectionnez GIT Bash Here (voir l'image ci-jointe), puis utilisez votre commande sh comme par exemple:

sh test.sh

enter image description here

106
Faisal Mq

Le moyen le plus courant d’exécuter un fichier . Sh utilise le sh commande:

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

autre bonne option est l’installation CygWin

dans Windows la home se trouve dans:

C:\cygwin64\home\[user]

par exemple, j'exécute mon fichier my-script-test.sh à l'aide de la commande bash en tant que:

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

vous pouvez aussi utiliser cmder

Cmder est un progiciel créé par frustration à cause de l'absence d'émulateurs de console Nice sous Windows. Il est basé sur un logiciel étonnant, agrémenté des couleurs Monokai et d’une mise en page Prompt personnalisée, sexy dès le début.

Screenshot

cmder.net

9
vipmaa

Sur Windows 10 Anniversary Update, il est encore plus facile d’exécuter des commandes Shell sous/avec bash sous Ubuntu sous Windows

J'essayais de définir ma région pour mon routeur xgwr r7000 netgear, j'ai trouvé ce qui suit fonctionnait pour moi, en utilisant bash sur Ubuntu sur Windows, vous devez activer le sous-système présent dans les fonctionnalités de Windows et activer le mode dev

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

Personnellement, j'ai utilisé ce fichier de commandes, mais CygWin doit être installé (64 bits, comme indiqué). Associez simplement le type de fichier .SH à ce fichier batch (ExecSH.BAT dans mon cas) et vous pouvez double-cliquer sur le fichier .SH pour le lancer.

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

Basé sur this travail original.

3
Anonymouse

Nouvelle fonctionnalité dans Windows - lancez bash sur ubuntu sur windows - disponible dans Windows 10 "Insiders" construit après la conférence de construction:

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

3
claudiu.nicola