79 votes

Comment exécuter un fichier .sh sous Windows ?

Lorsque j'essaie d'exécuter un fichier (name.sh) dans la ligne de commande par la commande ./name.sh , j'obtiens l'erreur suivante :

"." n'est pas reconnu comme une commande interne ou externe, opérable ou batch fichier

s'il vous plaît aidez-moi à exécuter le fichier .sh

81voto

Luca Molteni Points 2328

Vous êtes sur Windows CMD.EXE (d'après le message d'erreur). Il utilise une syntaxe différente pour exécuter les commandes. Vous devez utiliser sh name.sh en supposant que vous avez installé Cygwin ou un programme similaire.

Pour clarifier, Windows ne dispose pas d'un utilitaire intégré pour prendre en charge les fichiers .sh. Pour les exécuter, vous devez installer un outil tiers tel que Cygwin .

22voto

La meilleure solution à mon avis :

  • Télécharger et installer .git pour Windows

  • Faites un clic droit sur le bureau et dites "git bash ici"

  • Exécutez votre script comme dans unix

  • C'est fait !

Attention : De nombreuses commandes ne fonctionnent pas sous Windows ! Cependant, la plupart des commandes de base fonctionneront.

Si vous avez régulièrement besoin de ce script, vous pouvez créer un raccourci (sur votre bureau par exemple) :

  • Créer un raccourci à mintty.exe sur votre bureau

  • Modifier les propriétés du raccourci et changez la cible (gardez le chemin) :

  • C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'

14voto

Mark Levison Points 611

Vous essayez d'exécuter une commande Linux dans l'invite de commande Windows.

Sous Linux, la barre oblique est un séparateur de chemin. Sous Windows, la barre oblique inverse est un séparateur de chemin et la barre oblique avant indique généralement un argument.

Par conséquent, Windows pense que vous essayez d'exécuter une commande appelée "." et l'interprète comme l'argument "/nom.sh". La convention correcte serait ". \name.sh ". De plus, Windows recherchera automatiquement votre commande dans le répertoire courant, vous pouvez donc simplement taper "name.sh".

Le prochain problème que vous rencontrerez est que Windows ne sait pas ce qu'est un sh script, encore une fois c'est un truc de Linux. Vous pouvez résoudre ce problème en installant Cygwin si vous voulez vraiment ou avez besoin d'exécuter un sh script.

Cependant, à en juger par l'un de vos précédents commentaires, vous pourriez tout aussi bien renommer le script en name.bat et supprimer la ligne "#!/bin/sh". Vous avez maintenant un fichier Batch que Windows devrait comprendre. Vous pouvez en savoir plus sur les fichiers batch ici .

11voto

steve Points 127

Vous pouvez aussi vous tourner vers le côté obscur et installer Linux. A partir de l'invite :

sh runide.sh

ou

sudo sh runide.sh

Votre programme fonctionnera et vous aurez également un meilleur système.

5voto

J.M. Points 51

Vous essayez de faire fonctionner votre voiture avec du jus d'orange au lieu de l'essence. Windows partage des commandes similaires stockées dans des fichiers .bat ou .cmd avec Unix/Linux/zOS Unix Subsystem/*ix Shell Shell car ces deux familles de systèmes d'exploitation ont un ancêtre commun : les machines DEC PDP-x.

Si vous voulez une gratification instantanée, vous devrez installer un environnement qui fournit un programme "sh.exe" ou "csh.exe" ou "bash.exe" (tsh.exe, par exemple).

Alternativement, si vous connaissez très bien les commandes Unix script, et que vous connaissez très bien les commandes des fichiers Windows .cmd et .bat, vous pouvez traduire le fichier .sh en un fichier .bat ou .cmd. Malgré cela, vous rencontrerez souvent des programmes de type Unix qui n'ont pas d'équivalent sous Windows -grep, sed, vi, emacs, etc. Ainsi, l'appel à installer CygWin (pas de minimaliste)--juste pour avoir le script et les outils Unix. Mettez-le sur un flash-drive, pour ces occasions spéciales.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X