Есть ли способ запускать сценарии 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. .


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!


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.