11
votes

Cygwin Bash Script Commande introuvable quand appelée à partir de lot

#!/bin/bash
echo "Testing"
cd "/cygdrive/x/Internal Communications/Riccardo/"
filename=htdocs-`date +%A`.tar.gz
tar cvzf $filename "/cygdrive/c/Program Files/Zend/Apache2/htdocs"
The above script is working when it is called inside cygwin console, but when I try to call it from a batch file I get "command not found" for date and tar command. I think that bash.exe does not have the PATH set up.I need to run that script from that batch file because I want to add the script to the task scheduler.

0 commentaires

5 Réponses :


10
votes

Mettez votre annuaire de bin Cygwin (probablement C: \ Cygwin \ bin ) sur votre variable d'environnement de chemin.

Cela vous donnerait également l'avantage d'être capable d'utiliser des commandes telles que goudron , ls , rm , etc. à partir d'une console régulière Windows et pas seulement une console Cygwin.


1 commentaires

Bonjour, j'ai ajouté le chemin (je suis sûr que c'est le chemin correct) mais LS, Grep, etc Les commandes ne sont toujours pas trouvées. une idée?



12
votes

FWIW, Cygwin a cron .

Appelez-vous votre script comme celui-ci? P>

bash --login -i ./myscript.sh


3 commentaires

Parmi les personnes qui ont affiché des réponses jusqu'à présent, Seth est la seule personne qui reconnaît que la mise en place de C: \ Cygwin \ bin sur le chemin ne permet pas à Windows de comprendre par magie les scripts Bash. Vous devez envoyer votre script à Bash.exe.


Le lot est: c: \ cygwin \ bin \ bash.exe "c: \ backup.sh" Je pense que je n'ai pas installé Cron en cygwin. Dois-je l'installer uniquement ou dois-je faire une autre configuration pour utiliser cron? Merci mon pote!


@RTACCONI - C'est plus que d'installer simplement. Le lien que j'ai dans ma réponse passe par les étapes consistant à installer / configurer cron



2
votes

Si ce script est invoqué à partir d'une coque de commande Windows, la première ligne entraînera une erreur car #! / bin / bash n'est pas une commande Windows reconnue et # N'est-ce pas un fichier de commentaire valide dans un fichier de commandes.

Donc, le résultat final est que ce script fonctionne comme un fichier de commandes régulier plutôt que de Bash de Cygwin. Comme indiqué par Matt B , vous n'avez probablement pas le chemin exécutable Cygwin dans la variable d'environnement de votre chemin. Sans cela, le fichier de commandes ne peut pas trouver les utilitaires Cygwin ( goudron et date ).


0 commentaires

17
votes

Comme cela a déjà été dit, vous devez ajouter les fichiers binaires Cygwin à votre chemin. Pour ce faire, cliquez avec le bouton droit de la souris sur "Mon ordinateur", cliquez sur "Propriétés", puis "Advanced", puis "Variables d'environnement".

Créer une nouvelle variable d'environnement avec nom "cygwin_home" et valeur "C: \ Cygwin" (ou où que vous installiez Cygwin. L'emplacement par défaut est "C: \ Cygwin \" afin que cela fonctionne probablement pour vous).

Puis modifiez la variable d'environnement nommée "Chemin", puis sur ce qui suit à la fin:

;% cygwin_home% \ bin;% cygwin_home% \ sbin;% cygwin_home% \ usr \ bin;% cygwin_home% \ usr \ sbin;% cygwin_home% \ usr \ local \ bin;% cygwin_home% \ usr \ local \ SBIN

Fermez votre invite de commande, puis rouvrez-la. Les fichiers binaires Cygwin devraient maintenant être disponibles. Vous pouvez vérifier cela en tapant «qui bash». Il devrait signaler l'emplacement de votre exécutable Bash.


0 commentaires

0
votes

Je viens d'avoir ce problème.

Modification de la variable d'environnement fonctionne bien. Mais si vous n'avez aucun droit d'administrateur, vous ne pouvez pas le faire. Dans ce cas, vous pouvez exécuter vos commandes en utilisant le chemin absolu comme: xxx

si votre script Bash fonctionne même si vous l'appelez à partir d'un fichier de commandes.


0 commentaires