#!/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"
Горният скрипт работи, когато се извиквавътре в конзолата cygwin, но когато се опитам да го нарека от партиден файл получавам "командата не е намерена" за командата за дата и тар. Мисля, че bash.exe няма настройка PATH.
Трябва да стартирам този скрипт от този партиден файл, защото искам да добавим скрипта към график за задачи.
Отговори:
9 за отговор № 1Поставете директорията на библиотеката си (вероятно C:cygwinbin
) в променливата ви за обкръжение PATH.
Това също ще ви даде полза от възможността да използвате команди като tar
, ls
, rm
, и т.н. от обикновени конзолни прозорци, а не само конзола на Cygwin.
15 за отговор № 2
Както вече беше казано, трябва да добавите бинарите на Cygwin към вашия път. За да направите това, кликнете с десния бутон върху "Моят компютър", кликнете върху "Свойства", след това върху "Разширени", след това върху "Променливи на средата".
Създайте нова променлива за околната среда с име "CYGWIN_HOME" и стойност "C: cygwin" (или където и да сте инсталирали cygwin.
След това редактирайте променливата на средата, наречена "PATH", и прикрепете следното към края:
;% CYGWIN_HOME% бин;% CYGWIN_HOME% sbin;% CYGWIN_HOME% usrbin;% CYGWIN_HOME% usrsbin;% CYGWIN_HOME% usrlocalbin;% CYGWIN_HOME% usrlocalsbin
Затворете командния ред и го отворете отново. Следва да са налице бинарни данни cygwin. Можете да я проверите, като въведете "кой баш". Той трябва да съобщава за местоположението на вашия изпълним файл.
10 за отговор № 3
FWIW, Cygwin има Cron.
Казвате ли скрипта си по този начин?
bash --login -i ./myscript.sh
2 за отговор № 4
Ако този скрипт е извикан от командния четец на Windows, първият ред ще доведе до грешка оттогава #!/bin/bash
не е разпознат командване на Windows и #
не е валиден коментар разделител в партиден файл.
Така че, най-долната линия е, че този скрипт работи като обикновен партиден файл, а не от базата на Cygwin. matt b
, най-вероятно нямате Cygwin изпълним път в променливата за PATH средата. Без това партидният файл не може да намери помощните програми на Cygwin (tar
и date
).
0 за отговор № 5
Просто имах този проблем.
Редактирането на променливата на средата работи чудесно. Но ако нямате администраторски права, не можете да направите това. В този случай можете да изпълнявате командите си, като използвате абсолютния път като:
/usr/bin/tar cvzf $filename
/usr/bin/cat $filename
Ако го направите, вашият баш скрипт работи дори ако го наречете от партиден файл.