Есть ли способ запускать сценарии Bash в Windows? [закрыто]

100

Я купил и использую Windows 7 Ultimate, и мне нравится использовать ее для разработки приложений. Один из недостатков (как и в любой другой ОС) заключается в том, что я не могу запускать сценарии Bash. Есть ли способ запускать сценарии Bash в Windows, установив какое-либо программное обеспечение? Ничего страшного, если он не работает на 100%, но пока доступны наиболее распространенные функции, он должен быть отличным.

Башня
источник
3
@Rajish Больше нет…
msanford
1
@msanford, в этом нет смысла. Почему этому потоку разрешено жить, пока его дубликат закрывается?
Pacerier
@Pacerier Дубликат был удален, почти наверняка его автором, поскольку моды, как правило, не удаляют вопросы. Вероятно, это то, что имел в виду мой комментарий. Не знаю, почему автор удалил это. И это было 4 года назад.
msanford

Ответы:

80

Установите Cygwin , который включает в себя Bash среди множества других утилит GNU и Unix (без которых bash вряд ли будет очень полезен в любом случае).

Другой вариант - MSYS от MinGW, который включает bash и меньший набор более важных утилит, таких как awk. Лично я предпочел бы Cygwin, потому что он включает в себя такие тяжелые инструменты, как Perl и Python, без которых я не могу жить, в то время как MSYS экономит на них и предполагает, что вы собираетесь установить их самостоятельно.

Обновлено : если кто-то заинтересован в этом ответе и использует MS-Windows 10, обратите внимание, что в MS-Windows 10 есть функция « Подсистема Windows для Linux », которая - после включения - позволяет вам установить образ Ubuntu в пользовательском режиме и затем запустите на нем Bash. Это обеспечивает 100% совместимость с Ubuntu для отладки и запуска сценариев Bash, но эта установка полностью автономна от Windows, и вы не можете использовать сценарии Bash для взаимодействия с функциями Windows (такими как процессы и API), за исключением ограниченного доступа к файлам через функцию DrvFS. .

Guss
источник
2
См. Документацию по подсистеме Windows для Linux (WSL) для получения дополнительной информации.
stomy
1
WSL устарел для Windows 10 S ... :(
Хавьер Гарсиа Манзано,
2
Не устарело, это лишь одна из функций, которую вы не получите, если купите более дешевую версию Windows " S mall edition". Он также недоступен в Home Edition, IIRC.
Guss
Git позволяет легко запускать командный файл из любой точки окна youtube.com/watch?v=7keNZT9579k
Мухаммад Файзан Хан
@MuhammadFaizanKhan - Порт Git для Windows, а также несколько других приложений, ориентированных на командную строку (Github Desktop в качестве примечательного примера), также поставляются с портом Bash для Windows. Чаще всего это порты MinGW (т. Е. Скомпилированные с использованием MinGW и MSYS для совместимости с Posix). В частности, если вы посмотрите на свою установку Git для Windows, вы увидите mingw32каталог, содержащий в основном MSYS. Итак, Git для Windows - это MinGW, который включает Git (его необязательно в установщике MSYS) с «более приятным» установщиком: superuser.com/a/1362301/10942
Гасс,
31

Лучший вариант, который я смог найти, - это Git Windows. Просто установите его, а затем щелкните правой кнопкой мыши и выберите «Git Bash Here», это откроет окно bash.введите описание изображения здесь

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

и команды linux работают ...

Я пробовал команды 'sh', 'vi', 'ssh', 'curl' и т. Д.

Гарвит Джайн
источник
ЭТО - это так просто?
Kalpesh Soni
да, действительно удобно
Гарвит Джайн
4
Вы также можете просто установить MinGW без лишних усилий Git, если вам нужна только его оболочка.
Stefan Z Camilleri
Вы можете посмотреть это одноминутное руководство здесь youtube.com/watch?v=7keNZT9579k
Мухаммад Файзан Хан
25

Если вы ищете что-то более родное, вы можете использовать getGnuWin32 для установки всех перенесенных инструментов командной строки unix. Этот плюс winBash дает вам большую часть рабочей среды Unix. Добавьте console2 для лучшего эмулятора терминала, и вы почти не сможете определить свой на Windows!

Cygwin - лучший инструментарий в целом, но я столкнулся с неожиданными проблемами из-за разделения между ним и окнами. Однако ни одно из этих решений не так хорошо, как родная система Linux.

Вы можете изучить возможность использования virtualbox для создания виртуальной машины Linux с выбранным вами дистрибутивом. Настройте его для совместного использования папки с ОС хоста, и вы можете использовать настоящую среду разработки Linux и делиться с Windows. Просто следите за этими маркерами EOL, они появляются каждый раз.

Спенсер Рэтбун
источник
Или CoLinux
Guss
colinux не работает на 64-битных (пока)
hexicle
Кто-нибудь знает преемника проекта win-bash? Он больше не активно разрабатывается и застревает на bash v 1.14 (собственно bash, на момент публикации, v 4.4)
Bjartr
@Bjartr Ребята из Microsoft добавили функцию, позволяющую запускать нативную версию bash в Windows 7
Спенсер Рэтбун
@SpencerRathbun Это будет работать только в Windows 10, я оказался в Windows 7. Я также не уверен, как он работает со смешиванием исполняемых файлов и путей Linux и Windows, поэтому он может быть не лучше (с моей точки зрения), чем cygwin bash .
Bjartr 01
11

Лучший вариант? Windows 10. Встроенная поддержка Bash!

Paul0515
источник
2
Нет, не лучшие варианты. Вы просто запускаете Linux таким образом, а не bash IN Windows - вы не можете запускать исполняемые файлы Windows из этого bash (если вы не обойдете это с помощью cbwin... но это уже слишком много для простого обходного пути).
ankostis
«Лучший» вариант, наверное, дело вкуса. Так что, может, ты прав. Тем не менее, он позволяет мне запускать любые (ну… большинство) сценарии bash на моем ПК с Windows.
Paul0515,
1
Вы можете запускать виртуальные все сценарии bash, если они не пытаются взаимодействовать с ОС хоста (Windows). WSL bash - это облегченная подсистема виртуализации, которая может выполнять исходные двоичные файлы ELF (например, Ubuntu), но вы не можете избежать этого!
ankostis
10

Вы всегда можете установить Cygwin для запуска оболочки Unix под Windows. Я широко использовал Cygwin с Window XP.

Майкл Шопсин
источник
Какой пакет мне нужно установить для запуска UNIX Shell в Cygwin?
Tower
@rFactor страница Cygwin включает установщик Windows со всеми необходимыми компонентами.
Spencer Rathbun
На сайте Cygwin объясняется, что было перенесено и как его установить. Если все, что вам нужно, это оболочка, то базовой установки Cygwin должно быть достаточно.
Майкл Шопсин,
9

После установки git-extentions ( https://code.google.com/p/gitextensions/ ) вы можете запустить файл .sh из командной строки. (Нет ./script.sh требуется, просто запустите его как файл bat / cmd) Или вы можете запустить их в «полной» среде bash, используя оболочку MinGW Git bash.

Я не большой поклонник Cygwin (да, я уверен, что он действительно мощный), поэтому запуск сценариев bash в Windows без необходимости его установки идеально подходит для меня.

Саймон Фезерстоун
источник
1
Я не знаю, что такое git-extensions, но в его описании говорится, что это графический пользовательский интерфейс для git. Как бы вы запускали сценарии оболочки из этого инструмента? Возможно, вы хотите запустить их с помощью msys bash, который он включает?
Miserable Variable
Просто для подтверждения - git-extensions действительно включает копию bash и устанавливает ее в пути. Я попытался bashиз экземпляра PowerShell, потерпел неудачу, установил git-extensions и повторил попытку, и это сработало для меня.
rtpHarry
4

Для запуска в исходном виде вам, вероятно, потребуется использовать Cygwin (без которого я не могу жить при использовании Windows). Так что сразу +1 за Cygwin. Все остальное было бы нецивилизованным.

ОДНАКО, как уже было сказано, я недавно начал использовать комбинацию утилит для легкого ПОРТИРОВАНИЯ сценариев Bash в Windows, чтобы мои коллеги по анти-Linux могли легко выполнять сложные задачи, которые лучше обрабатываются утилитами GNU.

Обычно я могу перенести сценарий Bash в пакетную обработку за очень короткое время, открыв исходный сценарий на одной панели и записав пакетный файл на другой панели. Я использую следующие инструменты:

Я предпочитаю UnxUtils GnuWin32 из-за того, что [кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь] утилиты GnuWin обычно должны быть установлены, тогда как UnxUtils - это автономные двоичные файлы, которые просто работают из коробки.

Однако CoreUtils не включает некоторые знакомые утилиты * NIX, такие как cURL, который также доступен для Windows (curl.haxx.se/download.html).

Я создаю папку для проектов и всегда УСТАНАВЛЯЮ ПУТЬ =. в файле .bat, чтобы не было ссылок на другие команды, кроме основных команд оболочки CMD (а также на конкретные UnxUtils, необходимые в папке проекта для того, чтобы сценарий пакетной обработки работал должным образом).

Затем я копирую необходимые файлы CoreUtils .exe в папку проекта и ссылаюсь на них в файле .bat, например ". \ Curl.exe -s google.com" и т. Д.

В программе Bat2Exe происходит волшебство. Как только ваш пакетный файл будет готов и успешно протестирован, запустите Bat2Exe.exe и укажите путь к папке проекта. Затем Bat2Exe создаст двоичный файл Windows, содержащий все файлы в этой конкретной папке, и будет использовать первый .bat, который будет использоваться в качестве основного исполняемого файла. Вы даже можете включить ICO-файл для использования в качестве значка для создаваемого окончательного EXE-файла.

Я пробовал несколько таких программ, и многие из сгенерированных двоичных файлов помечаются как вредоносные, но версия Bat2Exe, на которую я ссылался, работает отлично, а сгенерированные файлы .exe сканируются полностью.

Полученный исполняемый файл можно запустить в интерактивном режиме двойным щелчком или запустить из командной строки с параметрами и т. Д., Как и обычный пакетный файл, за исключением того, что вы сможете использовать функциональность многих инструментов, которые вы обычно используете. в Баш.

Я понимаю, что это занимает довольно много времени, но если я могу немного отвлечься, я также написал пакетный сценарий, который я называю PortaBashy, который мои коллеги могут запускать из общего сетевого ресурса, содержащего переносную установку Cygwin. Затем он устанавливает переменную% PATH% в обычный формат * NIX (/ usr / bin: / usr / sbin: / bin: / sbin) и т. Д. И может либо запускаться в самой оболочке Bash, либо запускать более мощную и симпатичный эмулятор терминала MinTTY.

Всегда есть множество способов выполнить то, что вы пытаетесь сделать; это просто вопрос сочетания правильных инструментов для работы, и во многих случаях все сводится к личным предпочтениям.

рубинорельс
источник
1

Есть еще одна теоретическая возможность сделать это: профессиональные версии Windows имеют встроенную поддержку POSIX, поэтому bash можно было скомпилировать для Windows изначально.

Жалко, но сам скомпилированный так и не нашел ...

лозы
источник
3
Sybsystem POSIX в Windows была заброшена [1]. Будет заменена «Подсистемой Windows для Linux», которая основана на облегченной системе виртуализации «Drawbridge» для запуска немодифицированного Ubuntu-bash. Но есть нюансы, например, оказавшись внутри этой системы, вы больше не можете вызывать исполняемые файлы Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis
@ankostis, Вообще-то с CU можно ...
Paul0515