Чи є спосіб запустити сценарії Bash в Windows? [зачинено]


100

Я купив і використовую Windows 7 Ultimate, і мені подобається використовувати його для розробки програм. Однією з нижчих сторін (як і у всіх ОС) є те, що я не можу запускати сценарії Bash. Чи є спосіб запустити сценарії Bash у Windows, встановивши якесь програмне забезпечення? Це нормально, якщо це не працює на 100%, але доки найпоширеніша функціональність є, вона повинна бути чудовою.


3
@Rajish Більше не…
msanford


1
@msanford, Це не має сенсу. Чому дозволено жити цій темі, поки її дублікат закривається?
Pacerier

@Pacerier Дублікат був видалений, майже напевно його автором, оскільки модники, як правило, не видаляють запитання. Це, мабуть, те, про що говорив мій коментар. Я не знаю, чому автор її видалив. Також це було 4 роки тому.
msanford

Відповіді:


80

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

Іншим варіантом є 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) .
стом

1
Зараз WSL застаріли для Windows 10 S ... :(
Хав'єр Гарсія Манцано

2
Не застаріла, це лише одна з особливостей, яку ви не отримаєте, якщо придбаєте дешевшу Windows " S mall edition". Він також недоступний у домашній версії, IIRC.
Гасс

Git дозволяє легко запускати пакетний файл з будь-якого місця в windows youtube.com/watch?v=7keNZT9579k
Мухаммед Файзан Хан

@MuhammadFaizanKhan - Порт Git для Windows, а також кілька інших додатків "орієнтований на командний рядок" (Github Desktop як помітний приклад) також поставляються з портом Windows Bash. Це частіше, ніж ні, це порти MinGW (тобто компільовані за допомогою MinGW та MSYS для сумісності з Posix). Зокрема, якщо ви подивитесь на вашу установку Git для Windows, ви побачили mingw32каталог, який в основному містить MSYS. Таким чином, Git для Windows - це MinGW, який включає Git (його необов'язково в інсталяторі MSYS) з "приємнішим" інсталятором: superuser.com/a/1362301/10942
Guss

30

Найкращий варіант, який я міг знайти, це Git Windows. Просто встановіть його, а потім клацніть правою кнопкою миші та натисніть "Git Bash Here", це відкриє вікно bash.введіть тут опис зображення

Це відкриє bash вікно так: введіть тут опис зображення

і команди Linux працюють ...

Я спробував команди 'sh', 'vi', 'ssh', 'curl' тощо ...


ЦЕ - його так просто немає?
Калпеш Соні

yup дійсно зручно
Garvit Jain

4
Ви також можете просто встановити MinGW без зайвого нальоту Git, якщо все, що вам потрібно, - це його оболонка.
Stefan Z Camilleri

Ви можете переглянути цей однохвилинний підручник тут youtube.com/watch?v=7keNZT9579k
Мухаммед Файзан Хан

25

Якщо ви шукаєте щось більш рідне, ви можете використовувати getGnuWin32 для установки всіх інструментів командного рядка unix, які були перенесені. Цей плюс winBash дає вам більшість робочих середовищ Unix. Додайте console2 для кращого емулятора терміналу, і ви майже не можете сказати свої дані на Windows!

Cygwin - це найкращий інструментарій загалом, але я опинився перед проблемами несподіванки через розрив між ним та windows. Жодне з цих рішень не таке добре, як рідна система Linux.

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


Або CoLinux: colinux.org
Guss

colinux не працює на 64-розрядному (поки)
hexicle

Хтось знає про наступника проекту win-bash? Він більше не активно розвивається і затримується на bash v 1.14 (власний удар, як на цій посаді, v 4.4)
Bjartr

@Bjartr Майкрософт додав функцію, яка дозволяє рідній версії bash працювати на Windows 7
Спенсер Ретбун

@SpencerRathbun Це буде працювати лише в Windows 10, я буваю в Windows 7. Я також не впевнений, як це грає зі змішуванням виконуваних файлів Linux та Windows та шляхів, так що це може бути не кращим (з моєї точки зору), ніж cygwin bash .
Bjartr

11

Найкращий варіант? Windows 10. Підтримка Native Bash!


2
Ні, не найкращі варіанти. Ви просто запускаєте Linux таким чином, а не башмайте IN Windows - ви не можете запускати виконувані файли Windows з цього файлу (якщо тільки ви не обходите його cbwin... але це вже занадто багато суєти для простого вирішення).
ankostis

"Найкращий" варіант - це, мабуть, справа смаку. Тож, можливо, ти маєш рацію. Однак це дозволяє мені запускати будь-які (ну .. більшість) скриптів bash на моєму ПК з Windows.
Paul0515

1
Ви можете запускати віртуальні всі сценарії bash - до тих пір, поки вони не намагаються взаємодіяти з хост-ОС (Windows). WSL bash - це легка підсистема віртуалізації, яка може виконувати оригінальні бінарні файли ELF (тобто Ubuntu) - але ви не можете цього уникнути!
ankostis

10

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


Який пакет мені потрібно встановити, щоб запустити оболонку UNIX у Cygwin?
Вежа

@rFactor Сторінка Cygwin включає інсталятор Windows з усіма необхідними компонентами.
Спенсер Ратбун

Сайт Cygwin пояснює, що було перенесено та як його встановити. Якщо все, що вам потрібно, це оболонка, то базової установки Cygwin має бути достатньо.
Майкл Шопсін

9

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

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


1
Я не знаю, що таке розширення git, але в його описі йдеться про графічний інтерфейс користувача для git. Як би ви запустили сценарії оболонки з цього інструменту? Можливо, ви маєте на увазі запустити їх за допомогою msys bash, який він включає?
Жалюгідна змінна

Просто для підтвердження - git-extensions включає копію bash, і вона встановлює її в шлях. Я спробував bashз екземпляра powerhell, не вдався, встановив розширення git і повторив спробу, і це працювало на мене.
rtpHarry

4

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

З цього моменту я нещодавно почав використовувати комбінацію утиліт, щоб легко PORT Bash-скрипти для Windows, щоб мої анти-Linux співробітники могли легко виконувати складні завдання, які краще справляються з утилітами GNU.

Зазвичай я можу перенести Bash-скрипт до Batch за дуже короткий час, відкривши оригінальний сценарій на одній панелі та записавши Пакетний файл на іншій панелі. Я використовую такі інструменти:

Я віддаю перевагу UnxUtils перед GnuWin32 через те, що [хтось, будь ласка, виправте мене, якщо я помиляюся] Утиліти GnuWin зазвичай мають бути встановлені, тоді як UnxUtils - це окремі бінарні файли, які просто працюють нестандартно.

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

Я створюю папку для проектів, і завжди SET PATH =. у файлі .bat, щоб ніякі інші команди, крім основних команд оболонки CMD, не посилалися (а також конкретні UnxUtils, необхідні в папці проекту, щоб сценарій Batch функціонував, як очікувалося).

Потім я копіюю потрібні файли 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
Системна програма POSIX у Windows була відмовлена ​​[1]. Замінюється "підсистемою Windows для Linux", яка базується на легкій системі віртуалізації "Drawbridge" для запуску немодифікованого Ubuntu-bash. Але є деякі нюанси, наприклад, потрапивши в цю систему, ви більше не можете викликати виконувані файли Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis

@ankostis, Власне, з МС ви можете ...
Paul0515
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.