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

132

Comment puis-je exécuter .sh sur l'invite de commande Windows 7? J'obtiens toujours cette erreur quand j'essaye d'exécuter cette ligne dedans,

app/build/build.sh

Erreur,

'app' is not recognized...

ou,

bash app/build/build.sh

Erreur,

'bash' is not recognized...

Des idées qu'est-ce que j'ai manqué?

Voici la capture d'écran, entrez la description de l'image ici

laukok
la source
6
vous avez besoin de cygwin (éventuellement). Vous essayez d'exécuter des scripts SHELL (.sh) sous Windows et c'est la seule façon d'exécuter mes .shfichiers sous Windows.
ha9u63ar

Réponses:

54

Le message d'erreur indique que vous n'avez pas installé bashou qu'il n'est pas dans votre PATH.

Le hit de 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 l'installation de Bash vous permette d'exécuter un script que vous avez trouvé sur le net, à moins qu'il n'ait été spécifiquement 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 exactement.

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é) pourrait être la solution la plus simple.

Le deuxième message d'erreur est dû au fait que Windows accepte nominalement la barre oblique comme 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 comme app /build /build.sh(ou, pour paraphraser avec les conventions d'options Unix, app --build --build.sh). Vous pouvez essayer, app\build\build.shmais il est peu probable que cela fonctionne, en raison des circonstances décrites ci-dessus.

tripleee
la source
1
Bien sûr, avec Windows 10, vous pouvez activer WSL et avoir presque un vrai ordinateur dans votre Windows.
tripleee
147

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, faites un clic droit dans votre dossier, sélectionnez GIT Bash Here(voir photo ci-jointe) et utilisez votre commande sh comme par exemple:

sh test.sh

entrez la description de l'image ici

Faisal Mq
la source
1
Ça ne marche pas pour moi. Une fenêtre d'invite de commande s'ouvre puis se ferme rapidement.
desbest
28
Si GIT est installé, vous pouvez ajouter à la variable système PATH un chemin d'accès sh.exe. Dans mon cas , il était: c:\Program Files\Git\bin. Ensuite, exécutez sh .\script.shPowerShell
Elshev
1
Cela fonctionne pour moi comme un charme dans Windows 10 en 2020! Bien que la commande copier / coller ne fonctionne pas pour moi car elle a été fixée à ctrl-insetshift-ins
Nam G VU
51

La manière la plus courante d'exécuter un fichier .sh consiste à utiliser la commande sh :

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

une autre bonne option consiste à installer CygWin

dans Windowsle homeest situé à:

C:\cygwin64\home\[user]

par exemple j'exécute mon my-script-test.shfichier en utilisant la commande bash comme:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 
Jorgesys
la source
43
À moins que vous n'ayez pris des mesures spéciales pour l'obtenir, vous n'aurez pas de shcommande sous Windows.
user2357112 prend en charge Monica
1
Ok -1, voulez-vous dire que je dois ajouter un tutoriel pour avoir accès à sh depuis la ligne de commande ???
Jorgesys
41
Votre réponse est présentée comme si vous vous attendiez à pouvoir taper shsur une invite de commande Windows arbitraire et à la faire fonctionner.
user2357112 prend en charge Monica
msys2 est un bon endroit pour obtenir la commande sh. Consultez github.com/userzimmermann/MSYS2-cmd si vous souhaitez l'utiliser avec cmd
Aralox
3
Bash et la shcommande sont installés avec Git4Windows si vous sélectionnez l'option d'installation 'Install Bash'.
Joel Ellis le
13

vous pouvez également utiliser cmder

Cmder est un progiciel créé par pure frustration face à l'absence de bons émulateurs de console sous Windows. Il est basé sur un logiciel incroyable et agrémenté de la palette de couleurs Monokai et d'une disposition d'invite personnalisée, qui a l'air sexy dès le début

Capture d'écran

cmder.net

vipmaa
la source
1
Bien qu'il semble venir avec un module complémentaire optionnel qui inclut des commandes shell Unix courantes, le package de base semble être juste un remplacement pour cmd.
tripleee
5

Sur la mise à jour anniversaire de Windows 10, il est encore plus facile d'exécuter des commandes shell dans / avec bash sur ubuntu sous Windows

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

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
SignéAdam
la source
Peut courir. Mais c'est un environnement complètement différent.
TamusJRoyce
4

Nouvelle fonctionnalité dans Windows - exécuter bash sur ubuntu sous Windows - disponible dans les builds Windows 10 "Insiders" après la conférence Build:

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

claudiu.nicola
la source
Cool, mais comment exécuter un shfichier avec bash? Si j'essaye de le faire, la fenêtre clignote et disparaît. Si je glisse et dépose le fichier dans une fenêtre bash ouverte, cela indique que le chemin n'a pas été trouvé (car il utilise une convention différente).
m93a
Est-il possible de nos jours d'exécuter un fichier .sh sous Windows? Je ne peux pas l'essayer maintenant mais ça m'intéresse.
JesusMurF
1
Je ne l'ai pas essayé moi-même, mais il existe un guide de Microsoft sur la façon d'exécuter sh sur Windows: docs.microsoft.com/en-us/windows/wsl/install-win10
claudiu.nicola
@ m93a Dans une fenêtre de terminal Ubuntu, bash path/to/scriptexécute le script. Il y en a certainement aussi shdans Ubuntu. Si le script a un shebang et des permissions appropriés, il path/to/scriptl'exécutera simplement avec l'interpréteur spécifié dans le shebang.
tripleee
4

Personnellement, j'ai utilisé ce fichier de commandes, mais il nécessite l'installation de CygWin (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 .SH et il s'exécute.

@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 ce travail original.

Anonymouse
la source
0

J'utilise Windows 10 Bash shell aka Linux Subsystem aka Ubuntu dans Windows 10 comme guidé ici

Nam G VU
la source