2010-03-15 07:34:42 +0000 2010-03-15 07:34:42 +0000
68
68
Advertisement

Comment exécuter un fichier .sh sous Windows ?

Advertisement

Lorsque j'essaie d'exécuter un fichier (nom.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, un fichier opérable ou un fichier batch

veuillez m'aider à exécuter le fichier .sh

Advertisement

Réponses (15)

76
76
76
2010-03-15 07:58:46 +0000

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 devrez utiliser sh name.sh, en supposant que vous avez installé Cygwin ou similaire.

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

13
13
13
2010-03-15 13:48:44 +0000

Vous essayez d'exécuter une commande Linux à 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'analyse de l'argument “/nom.sh”. La convention correcte serait “.\name.sh”. De plus, Windows recherchera automatiquement votre commande dans le répertoire courant et vous pourrez alors taper “nom.sh”.

Le problème suivant auquel vous serez confronté est que Windows ne sait pas ce qu'est un script sh, ce qui est également le cas sous Linux. Vous pourriez résoudre ce problème en installant Cygwin si vous voulez ou devez vraiment exécuter un script sh.

Cependant, à en juger par 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 .

11
Advertisement
11
11
2010-11-18 15:46:30 +0000

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

sh runide.sh

ou

sudo sh runide.sh

Votre programme s'exécutera et vous aurez également un meilleur système.

9
9
9
2017-04-09 18:58:10 +0000

Meilleure solution à mon avis :

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

  • Cliquez sur le bureau avec le bouton droit de la souris et dites “git bash here ”

  • Exécutez votre script comme sous unix

  • C'est fait !

_Caution : Beaucoup de commandes ne fonctionnent pas sous Windows ! Si vous avez besoin de ce script régulièrement, vous pouvez créer un raccourci (sur votre bureau par exemple) :

  • Create a Shortcut to mintty.exe on your desktop

  • Edit properties of the shortcut and change the target (keep the path) :

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

5
Advertisement
5
5
2011-08-16 22:52:50 +0000

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

Si vous voulez une satisfaction instantanée, vous devrez installer un environnement qui fournit un “sh. exe” ou un programme “csh.exe” ou “bash.exe” (tsh.exe quelqu'un ?)

Alternativement, si vous connaissez très bien les commandes de script Unix et les commandes de 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 style Unix qui n'ont pas d'équivalent sous Windows : grep, sed, vi, emacs, etc. Ainsi, l'appel à l'installation de CygWin (pas minimaliste) – juste pour obtenir le shell et les outils Unix. Mettez-le sur une clé USB, pour ces occasions spéciales.

3
3
3
2012-05-28 23:19:47 +0000

Quelqu'un a parlé de MS-DOS utilisant / pour les commandes et Quelqu'un a parlé de MS-DOS utilisant/` pour les commandes et pour les chemins. Cela est légèrement trompeur. Regardez mon exemple :

C:\myfoo\foo\>cd../.. 
C:\myfoo\foo\>cd..\..

n'a aucune différence d'effet. Oui, ce n'est pas vrai pour toutes les opérations - la réponse réelle est simplement Non, ou sans Cygwin ou SSHD vous ne pouvez pas.

Je le sais seulement parce que j'ai stupidement passé une demi-journée à essayer de comprendre ce que if then fi et eval, exec font avec -Djava.something lorsqu'il est appelé.

2
Advertisement
2
2
2015-07-20 16:24:31 +0000

Utilisez Github pour Windows. Il contient tous les exécutables de l'environnement Unix. https://github-windows.s3.amazonaws.com/GitHubSetup.exe

1
1
1
2014-05-13 22:05:11 +0000

J'ai trouvé une solution différente et facile, appelée UnixUtil .

Téléchargez et dézippez-la en C : drive. Réglez la variable d'environnement path pour inclure C:\UnixUtils\usr\local\wbin.

C'est important. NE PAS définir le chemin d'accès à C:\UnixUtils\bin

1
Advertisement
1
1
2018-05-01 16:06:51 +0000

C'est un vieux fil de discussion, mais pour ceux qui utilisent Windows 10. Il suffit d'ouvrir les fonctionnalités de Windows à partir du panneau de configuration “Activer ou désactiver les fonctionnalités de Windows”

Choisissez la fonctionnalité “Sous-système Windows pour Linux”. Après l'installation, vous disposez de “Bash” et vous pouvez même configurer des serveurs Linux natifs dans “Bash”. Et bien sûr, la commande sh, within bash, fonctionne aussi.

1
1
1
2016-12-27 10:39:14 +0000

Pour être complet, je voudrais mentionner une nouvelle fonction “Sous-système Windows pour Linux” pour Windows 10. Les détails sont décrits dans http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

Notez qu'il faut activer le commutateur “Mode développeur” et activer l'option “Sous-système Windows pour Linux (Beta)”.

Pour ma part, j'ai trouvé que l'installation de Git pour Windows (que j'utilise de toute façon) est suffisante.

0
Advertisement
0
0
2012-08-31 15:16:38 +0000

Si vous avez un boîtier Linux chez vous (ou au travail) et qu'il est branché sur le même réseau, et que ce réseau est sûr, ceci pourrait faire l'affaire :

  1. Faites un partage de dossier sur Windows (assez facile, mais assurez-vous que le réseau est à l'abri des intrus).
  2. Montez le sous Linux avec mount //WinMachine/Share LinuxFolder (IIRC, et nécessite Samba ).
  3. En utilisant quelque chose comme PuTTY , connectez-vous à distance à cette boîte Linux.
  4. Exécutez votre commande dans le dossier monté.
0
0
0
2010-03-15 13:46:42 +0000

OK, il y a un gros problème avec ça - laissez tomber le #!/bin/sh, et changez l'extension en bat, et ça pourrait fonctionner avec quelques corrections supplémentaires. La syntaxe d'un script shell unix et d'un fichier batch de windows arn n'est pas très similaire. cygwin, ou un tas d'embrouilles avec unxutils pourrait faire quelque chose qui fonctionnerait dans les deux, mais à moins que vous ne soyez ABSOLUMENT sûr que l'environnement est toujours le même, cela ne vaut pas la peine de se prendre la tête

0
Advertisement
0
0
2016-08-25 07:34:59 +0000

Bien que les réponses existantes ici étaient correctes à l'époque, Windows 10 doit inclut maintenant optionnellement une version modifiée d'Ubuntu exécutant un shell bash complet . Si vous souhaitez exécuter un script directement à partir de Windows, vous pouvez créer un raccourci dans le même répertoire et définir la “Cible” comme suit :

chmod +x myscript.sh
./myscript.sh

Si le chemin de votre script est relatif à l'emplacement du raccourci (comme dans l'exemple ci-dessus), assurez-vous que le champ “Démarrer dans” est également vide.

0
0
0
2015-11-23 11:57:56 +0000

Pour exécuter le script shell à partir des fenêtres. Utilisez d'abord la commande : dos2unix puis utilisez votre commande normale : sh runide.sh

Cela fonctionnera.

0
Advertisement
0
0
2010-03-15 07:55:19 +0000

Il est possible que le problème soit en fait dans le fichier name.sh – vous essayez d'utiliser la commande . mais elle tente d'exécuter une sorte de shell (par exemple, csh, je pense) dans lequel ce n'est pas une commande valide.

Donc : est-ce que name.sh commence avec le bon #!/bin/sh (si vous essayez en fait d'exécuter sh) ?

Advertisement