Как запустить .sh в командной строке Windows?

Как я могу запустить .sh в командной строке Windows 7? Я всегда получаю эту ошибку, когда пытаюсь запустить эту строку,

app/build/build.sh

ошибка,

'app' is not recognized...

или,

bash app/build/build.sh

ошибка,

'bash' is not recognized...

Любые идеи, что я пропустил?

Здесь захват экрана, enter image description here

Ответ 1

Сообщение об ошибке указывает, что вы не установили bash, или он не находится в вашем PATH.

Топ-хит Google http://win-bash.sourceforge.net/, но вам также нужно понять, что большинство сценариев Bash ожидают Unix-подобную среду; поэтому просто установка Bash, вероятно, вряд ли позволит вам запустить script, который вы нашли в сети, если только он не был специально разработан для этого конкретного сценария использования. Обычным решением этого является https://www.cygwin.com/, но есть много возможных альтернатив, в зависимости от того, что именно вы хотите выполнить.

Если Windows не является центральной для вашего сценария использования, установка бесплатной ОС (возможно, виртуализация) может быть самым простым способом.

Второе сообщение об ошибке связано с тем, что Windows номинально принимает косую черту как разделитель каталога, но в этом контексте интерпретируется как разделитель переключателей. Другими словами, Windows анализирует вашу командную строку как app /build /build.sh (или, перефразируя условные обозначения Unix, app --build --build.sh). Вы можете попробовать app\build\build.sh, но это вряд ли сработает из-за описанных выше обстоятельств.

Ответ 2

Установите GIT. Во время установки GIT, добавьте GIT Bash в контекстное меню Windows, выбрав его опцию. После установки щелкните правой кнопкой мыши в своей папке, выберите GIT Bash Here (см. Прилагаемый рисунок) и используйте команду sh, например:

sh test.sh

введите описание изображения здесь

Ответ 3

Самый распространенный способ запуска файла .sh - использовать sh команда:

C:\>sh my-script-test.sh 

другой хороший вариант установки CygWin

in Windows home находится в:

C:\cygwin64\home\[user]

Например, я выполняю файл my-script-test.sh с помощью команды bash как:

[email protected] ~$ bash /home/[user]/my-script-test.sh 

Ответ 4

Вы также можете использовать cmder

Cmder - это программный пакет, созданный из чистого разочарования по поводу отсутствия хороших консольных эмуляторов в Windows. Он основан на потрясающем программном обеспечении и приправлен цветовой схемой Monokai и настраиваемой раскладкой, выглядя сексуально с самого начала

Screenshot

cmder.net

Ответ 5

В Windows 10 Anniversary Update, еще проще запускать команды оболочки в/с bash на ubuntu на windows

Я пытался установить свой регион для своего маршрутизатора netgear x-wrt r7000, я нашел, что для меня работало, используя bash на ubuntu на окнах, вам нужно включить подсистему, найденную в функциях Windows, и режим dev на

ssh [email protected] < /mnt/c/ccode-eu.sh

Ответ 7

Лично я использовал этот командный файл, но для него требуется CygWin (64-разрядная версия). Просто сопоставьте тип файла .SH с этим пакетным файлом (ExecSH.BAT в моем случае), и вы можете дважды щелкнуть по .SH и запустить его.

@echo off
setlocal

if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof

set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof

:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A

:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%;  %_CYGSCRIPT% %*'

На основе этой оригинальной работы.