Запуск сценария оболочки через Cygwin в Windows
У меня есть куча скриптов, которые используются для запуска на компьютере с ОС Linux. Теперь мы перешли на Windows, и мне нужно запустить эти сценарии там. У меня есть программа установлен, но есть ли способ заставить скрипт работать с помощью Cygwin, но вызов производится из пакета Windows?
5 ответов:
конечно. На моей (довольно ванильной) установке Cygwin,
bash
находится вc:\cygwin\bin
Так что я могу запуститьbash
скрипт (скажемtestit.sh
) из пакетного файла Windows с помощью команды:C:\cygwin\bin\bash testit.sh
... которые могут быть включены в
.bat
файл так же легко, как он может быть набран в командной строке, и с тем же эффектом.
еще одна вещь - если вы редактировали сценарий оболочки в каком-то текстовом редакторе Windows, который производит
\r\n
окончания строк, cygwin's bash не примет эти\r
. Просто бегиdos2unix testit.sh
перед выполнением скрипта:C:\cygwin\bin\dos2unix testit.sh C:\cygwin\bin\bash testit.sh
Если у вас есть доступ к редактору Notepad++ в Windows есть функция, которая позволяет легко обойти эту проблему:
- откройте файл, который дает ошибку в Notepad++.
- перейдите в меню " Редактировать "и выберите"преобразование EOL"
- там есть опция для " Unix / OSX формат.- Выбери этот вариант.
- сохраните файл.
Я сделал это, и это решило мои проблемы.
надеюсь, что это помогает!
подробнее на http://danieladeniji.wordpress.com/2013/03/07/microsoft-windows-cygwin-error-r-command-not-found/
просто хотел добавить, что вы можете сделать это, чтобы применить исправление dos2unix для всех файлов в каталоге, так как это сэкономило мне кучу времени, когда нам пришлось "исправить" кучу наших скриптов.
find . -type f -exec dos2unix.exe {} \;
Я бы сделал это как комментарий к ответу Романа, но у меня пока нет доступа к комментариям.
Если вы не возражаете всегда включать .sh в имя файла сценария, то вы можете сохранить тот же сценарий для Cygwin и Unix (Macbook).
Для иллюстрации:
1. Всегда включайте .sh в имя файла скрипта, например, test1.sh
2. test1.sh выглядит следующим образом в качестве примера:3. На Windows с использованием Cygwin, вы тип "test1.sh" для запуска
#!/bin/bash echo ' = ' echo ' = ' filepath=
4. На Unix, вы же типа "test1.sh" для запуска
Примечание: на Windows, вам нужно используйте проводник, чтобы сделать следующее один раз:
1. Откройте проводник
2. Щелкните правой кнопкой мыши на файле с расширением. sh, например test1.sh
3. Открыть с помощью... -> Выберите Ш.exe
После этого ваш Windows 10 запоминает, чтобы выполнить все .sh файлы с sh.исполняемый.
Примечание: используя этот метод, вам не нужно добавлять имя файла сценария с bash для запуска