Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Конечно. На моей (довольно ванильной) установке Cygwin bash находится в c:\cygwin\bin, поэтому я могу запустить bash script (скажем testit.sh) из командного файла Windows с помощью команды типа:

C:\cygwin\bin\bash testit.sh

... который может быть включен в файл .bat так же легко, как его можно ввести в командной строке, и с тем же эффектом.

Ответ 2

Еще одна вещь - если вы отредактировали оболочку script в каком-то текстовом редакторе Windows, который создает концы строк \r\n, cygwin bash не примет те \r. Просто запустите dos2unix testit.sh перед выполнением script:

C:\cygwin\bin\dos2unix testit.sh
C:\cygwin\bin\bash testit.sh

Ответ 3

Если у вас есть доступ к редактору Notepad ++ в Windows, есть функция, которая позволяет легко обойти эту проблему:

  • Откройте файл, сообщающий об ошибке в Notepad ++.
  • Перейдите в меню "Изменить" и выберите "EOL Conversion"
  • Существует опция "Формат UNIX/OSX". Выберите эту опцию.
  • Сохраните файл.

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

Надеюсь, это поможет!

Подробнее на http://danieladeniji.wordpress.com/2013/03/07/microsoft-windows-cygwin-error-r-command-not-found/

Ответ 4

Просто хотел добавить, что вы можете сделать это, чтобы применить решение dos2unix для всех файлов под каталогом, поскольку это избавило меня от кучи времени, когда нам пришлось "исправить" кучу наших скриптов.

find . -type f -exec dos2unix.exe {} \;

Я бы сделал это в качестве комментария к римскому ответу, но у меня пока нет доступа к комментариям.

Ответ 5

Если вы не возражаете всегда включать .sh в имя файла script, вы можете сохранить тот же script для Cygwin и Unix (Macbook).


Чтобы проиллюстрировать:
1. Всегда указывайте .sh на свое имя файла script, например, test1.sh
2. test1.sh выглядит следующим образом:
#!/bin/bash echo '$0 = ' $0 echo '$1 = ' $1 filepath=$1 Код > 3. В Windows с Cygwin вы вводите "test1.sh" для запуска
4. В Unix вы также набираете "test1.sh" для запуска


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


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