/ / cywin bash script script не знайдено при виклику з batch - bash, cygwin

Команда cywin bash script не знайдена, коли викликається з пакету - bash, cygwin

#!/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, але коли я намагаюся викликати її з пакетного файлу, я отримую "команду не знайдено" для команди date та tar. Я думаю, що bash.exe не має налаштування PATH.

Мені потрібно запустити цей скрипт із цього пакетного файлу, оскільки я хочу додати скрипт до планувальника завдань.

Відповіді:

9 для відповіді № 1

Помістіть свій каталог зі скринькою (можливо C:cygwinbin) у вашій змінній середовища PATH.

Це також дасть вам користь від використання таких команд tar, ls, rmтощо з звичайних вікон консолей, а не лише консолі Cygwin.


15 для відповіді № 2

Як уже було сказано, вам потрібно додати бінарні файли Cygwin на свій шлях. Для цього клацніть правою кнопкою миші «Мій комп'ютер», натисніть «Властивості», потім «Додатково», потім «Змінні середовища».

Створіть нову змінну середовища з назвою "CYGWIN_HOME" та значенням "C: cygwin" (або де б ви не встановили cygwin. Місце за замовчуванням - "C: cygwin", тому це, ймовірно, повинно працювати для вас).

Потім відредагуйте змінну оточення під назвою "PATH" і до кінця торкніться наступного:

% CYGWIN_HOME% бін;% CYGWIN_HOME% sbin;% CYGWIN_HOME% usrbin;% CYGWIN_HOME% usrsbin;% CYGWIN_HOME% usrlocalbin;% CYGWIN_HOME% usrlocalsbin

Закрийте командний рядок, а потім знову відкрийте його. Бінарні файли Cygwin тепер мають бути доступними. Ви можете двічі перевірити це, ввівши "який баш". Він повинен повідомити про розташування вашого виконуваного файлу bash.


10 за відповідь № 3

FWIW, Cygwin має крон.

Ви називаєте свій сценарій так?

bash --login -i ./myscript.sh

2 для відповіді № 4

Якщо цей скрипт викликається з командної оболонки Windows, перший рядок призведе до помилки, оскільки #!/bin/bash не є визнаною командою Windows і # не є дійсним розмежувачем коментарів у пакетному файлі.

Отже, суть полягає в тому, що цей скрипт працює як звичайний пакетний файл, а не з башти Cygwin 's. matt b, ви, ймовірно, не маєте виконуваного шляху Cygwin у вашій змінній середовища PATH. Без цього пакетний файл не може знайти утиліти Cygwin (tar і date)


0 для відповіді № 5

У мене просто була ця проблема.

Редагування змінної середовища працює чудово. Але якщо у вас немає прав адміністратора, ви цього не можете зробити. У цьому випадку ви можете виконувати свої команди, використовуючи абсолютний шлях, наприклад:

/usr/bin/tar cvzf $filename
/usr/bin/cat $filename

Якщо ви зробите це, ваш bash скрипт працює, навіть якщо ви викликаєте його з пакетного файлу.