Запуск сценария оболочки через Cygwin в Windows


У меня есть куча скриптов, которые используются для запуска на компьютере с ОС Linux. Теперь мы перешли на Windows, и мне нужно запустить эти сценарии там. У меня есть программа установлен, но есть ли способ заставить скрипт работать с помощью Cygwin, но вызов производится из пакета Windows?

5 53

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 есть функция, которая позволяет легко обойти эту проблему:

  1. откройте файл, который дает ошибку в Notepad++.
  2. перейдите в меню " Редактировать "и выберите"преобразование EOL"
  3. там есть опция для " Unix / OSX формат.- Выбери этот вариант.
  4. сохраните файл.

Я сделал это, и это решило мои проблемы.

надеюсь, что это помогает!

подробнее на 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 выглядит следующим образом в качестве примера:
#!/bin/bash echo ' = ' echo ' = ' filepath= 3. На Windows с использованием Cygwin, вы тип "test1.sh" для запуска
4. На Unix, вы же типа "test1.sh" для запуска


Примечание: на Windows, вам нужно используйте проводник, чтобы сделать следующее один раз:
1. Откройте проводник
2. Щелкните правой кнопкой мыши на файле с расширением. sh, например test1.sh
3. Открыть с помощью... -> Выберите Ш.exe
После этого ваш Windows 10 запоминает, чтобы выполнить все .sh файлы с sh.исполняемый.

Примечание: используя этот метод, вам не нужно добавлять имя файла сценария с bash для запуска