2013-06-15 11:48:25 +0000 2013-06-15 11:48:25 +0000
55
55

Как я могу использовать Бэш-подобную оболочку в Windows?

Я использую Linux и Mac, и скоро буду преподавать некоторые вещи из командной строки.

Что я могу установить в Windows, чтобы получить терминальное окно, наиболее похожее на базовую оболочку Mac/Linux Bash?

Я бы хотел иметь возможность определить также .bash_aliases, если это возможно.

Ответы (8)

48
48
48
2016-03-30 19:45:06 +0000

Теперь вы можете установить Windows Subsystem для Linux, которая позволяет вам запускать родной пользовательский режим оболочки Linux и инструменты на Windows. Это позволяет вам запускать оболочку Bash непосредственно в Windows и базируется на Ubuntu.

Это было введено в Windows 10 с юбилейным обновлением (2016) и не включено по умолчанию. Чтобы включить новую функцию на машине с юбилейным обновлением Windows 10, выполните следующее:

  1. Перейдите в “Настройки” -> Обновление и безопасность -> Для разработчиков и выберите “Режим разработчика”
  2. Панель управления -> Программы и функции и нажмите “Включить или выключить функции Windows” на верхней левой панели 0x2 и 3. В диалоговом окне установите флажок “Подсистема Windows для Linux” и нажмите Ok
  3. Перезагрузите машину 0x2 и 5. Поиск “bash” и нажмите на нее, она должна открыть командную строку и спросить вас, если вы хотите установить “Ubuntu на Windows”, продолжайте с “y” 0x2 и 6. После установки программа попросит создать имя пользователя и пароль UNIX
  4. Теперь вы готовы использовать bash оболочки

Немного истории, еще в 2015 году проект Astoria был начат, чтобы принести Android приложений для Windows, и они построили подсистему Linux под названием Windows Subsystem for Linux (WSL) для этой цели. В конце концов, проект Astoria был прекращен, так как это подорвало их стратегию UWP (Universal Windows Platform), но некоторые части были сохранены и стали основой bash для Windows. В течение всего курса Microsoft сотрудничала с Canonical (создателями Ubuntu Linux), чтобы предоставить им родной образ со всеми поддерживаемыми инструментами/бинариями.

Дополнительная информация доступна здесь, https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/ https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ https://sec.ch9.ms/sessions/build/2016/P488.mp4 (видео).

42
42
42
2013-06-15 11:50:58 +0000

Вы можете установить Cygwin или MSYS/MinGW , или установить полный дистрибутив Linux на виртуальную машину (например, используя VirtualBox ).

21
21
21
2017-05-09 14:27:32 +0000

Вот список опций, доступных по состоянию на 2018-05 годы, с большим количеством обновлений, касающихся WSL по состоянию на 2020-01 годы, а также немного подробностей по каждому из них.

Опции, которые выделяются

* Подсистема Windows для Linux(WSL) **

WSL становится все более и более зрелым (Microsoft уже давно отказалась от предупреждения о бета-версии ) и очень простым в установке, так что в большинстве случаев это очень хороший (если не самый лучший) вариант. Он решает проблему, используя другой метод, чем большинство других опций. Вы запускаете тот же самый двоичный код, что и в системе Linux. До 2020-01 WSL перехватывает вызовы ядра и транслирует их в вызовы windows ядра (думайте наоборот Wine). Это изменится, так как текущая бета-версия WSL запускает настоящее ядро linux в легковесной ВМ.

В любом случае, с WSL вы получите отличный командный интерпретатор с почти всеми CLI-функциями, которые вы ожидаете найти в стандартной установке Ubuntu и опцией apt install почти все, что доступно в репозиториях. В Microsoft официально заявляют, что “WSL не нацелена на поддержку GUI-десктопов или приложений” , однако существуют неофициальные инструкции о том, как это сделать. Похоже, что на данный момент (2020-01) основными недостатками WSL являются следующие:

Вот старое, но приятное сравнение с cygwin (обратите внимание, что Рич Тернер (Rich Turner) является членом команды WSL и он разместил много полезной информации о WSL)

Cygwin и Babun

Cygwin предоставляет следующее:

  1. оболочку bash и терминал Mintty,
  2. обширный набор общих утилит Linux, скомпилированных для работы под Windows
  3. всесторонний уровень совместимости, позволяющий запускать программы Linux под Windows.

Cygwin стремится облегчить портирование приложений Linux на Windows. Если какая-либо программа на C была разработана для Unix и предполагает использовать такие возможности, как трубы, доступ к файлам в стиле Unix и каталогам e.t.c., то вы можете скомпилировать ее для Cygwin, и Cygwin будет действовать как уровень совместимости между кодом и foreign OS (Windows). Это позволяет одной и той же программе на C работать как под Linux, так и под Windows с небольшими изменениями или вообще без них. Таким образом, был выполнен огромный список программ для Linux, которые могут быть запущены при установке Cygwin. Однако вы, пользователь этих программ, вероятно, должны быть знакомы с Unix. Например, вам может понадобиться передать аргументы типа /cygdrive/c/autoexec.bat вместо c:\autoexec.bat и быть готовым к работе с выводом с завершением строки Unix (\n) вместо завершения строки Windows (\r\n).

Коллекция всех программ Cygwin состоит из репозитория, и хотя Cygwin не имеет традиционного менеджера пакетов для Linux, вы можете добавлять, удалять и обновлять программы из этого репозитория в любое время очень интуитивным способом (вы запускаете настройку Cygwin. exe в любое время после завершения установки)

  • Babun ** - это Cygwin с полнофункциональным менеджером пакетов (pact), oh-my-zsh для его оболочки, git, автоматических обновлений и архитектуры, ориентированной на плагины. Хотя по умолчанию оболочкой по умолчанию является zsh, вы можете легко переключиться на bash. Похоже, что это хорошее обновление от ванильного Cygwin, если вы не возражаете против лишнего веса.

Mingw-w64

Mingw-w64 обеспечивает следующее:

  1. оболочка bash,
  2. достаточное количество утилит для Linux,
  3. цепочка инструментов разработки SW для сборки приложений, которые будут работать без уровня совместимости Linux (или с минимальным).

MinGW - в первую очередь дистрибутив программного обеспечения и платформа для сборки Windows. В частности, это Windows-порт инструментов компилятора GNU, таких как GCC, make, bash и так далее. Он включает в себя достаточное количество инструментов GNU и минимальный уровень совместимости с Unix.

Основная разница между Mingw-w64 и Cygwin заключается в приоритетах: Cygwin стремится обеспечить полный POSIX-совместимый уровень, включающий в себя полную реализацию всех основных системных вызовов и библиотек Unix; производительность вторична по сравнению с совместимостью. MinGW стремится к производительности, поэтому он не будет предоставлять определенные POSIX API, которые не могут быть реализованы легко и/или достаточно быстро под Windows. Также основной целью MinGW являются S/W разработчики. Тем не менее, случайные пользователи могут также наслаждаться его оболочкой и утилитами общего назначения.

MSYS2 и Git для Windows

MSYS2 обеспечивают следующее:

  1. оболочку bash и терминал Mintty,
  2. достаточное количество утилит Linux,
  3. полнофункциональный менеджер пакетов командной строки для установки программ ОС
  4. части из Cygwin и MinGW для поддержки сборки приложений как со всесторонним уровнем совместимости Linux, так и без него.
  5. репозиторий программного обеспечения и менеджер пакетов (pacman), который упрощает установку, использование, сборку и перенос программного обеспечения на Windows.

MSYS2 также является В первую очередь это дистрибутив программного обеспечения и строительная платформа для Windows типа MinGW, но она сочетает в себе как путь Cygwin, так и путь MinGW. Вы можете использовать MSYS2 для создания “MinGW программ” или “MSYS2 программ”. Более поздняя ссылка на слой совместимости MSYS2 (msys-2.dll), которая сама по себе внимательно следит за развитием слоя совместимости Cygwin с несколькими дополнениями/модификациями . Однако, репозитории 2-х проектов полностью не связаны друг с другом. Поэтому, хотя и MSYS2, и Cygwin предоставляют grep.exe, они могут иметь совершенно другую версию.

  • Git для Windows ** - это либо просто MSYS2 с установленным git'ом, либо по крайней мере в значительной степени основанный на MSYS2 . Он предоставляет ту же оболочку (bash), терминал (Mintty) и менеджер пакетов (pacman). Похоже, это самый популярный способ заставить доминирующий Git работать под Windows, и вместе с ним вы получаете приятное Unix окружение.

Общие принципы

За исключением WSL, большинство из вышеперечисленных инструментов имеют много общих технологий (библиотек, исполняемых файлов, концепций). Например, оболочка bash, которая идет с MinGW, зависит от msys-2.dll, которая сама по себе является развилкой cygwin.dll. Так что да, есть много места для путаницы :-).

Больше вариантов

  • Cmder ** предоставляет только хороший терминал и бэш-подобную оболочку для Windows. Его основным компонентом является * Conemu ** (терминал). Вдобавок к этому, он добавляет C, который предоставляет Powerful Bash-стиль редактирования командной строки, пользовательский макет запроса и цветовую схему Monokai. Он очень (или, возможно, полностью) совместим с консольными программами для родных окон.

  • Scoop ** предоставляет менеджер пакетов командной строки для многих известных кроссплатформенных программ, включая многие инструменты GNU. Он загружает предварительно скомпилированные пакеты. It не предоставляет ни оболочки, ни терминала, а запускается под командной строкой windows cmd.exe (со всеми его ограничениями, но также с полной совместимостью с родными консольными программами windows). Он также не содержит набора компиляторов (но, конечно, компиляторы и средства разработки - это типичные пакеты, которые можно установить с помощью scoop). Многие программы, которые устанавливает Scoop, либо исходят непосредственно из проекта MinGW/MSYS, либо были собраны с помощью их инструментов.

Еще больше вариантов

Решения, о которых мы говорим ниже, не кажутся активными, и я никогда не тестировал их, но они, кажется, делают работу за других:

  • Gow ** (Gnu On Windows) - легкая альтернатива Cygwin без оболочки. Он использует удобный инсталлятор Windows, который устанавливает около 130 чрезвычайно полезных приложений с открытым исходным кодом Linux, скомпилированных как родной win32 двоичный файл и доступных через командный интерпретатор windows’ cmd.exe. Она спроектирована так, чтобы быть как можно меньше (около 10 Мб).

  • UnxUtils & GnuWin32 **: UnxUtils - это набор портов обычных GNU Unix-подобных утилит на родной Win32, с исполняемыми файлами, зависящими только от Microsoft C-runtime msvcrt.dll. Вы должны загрузить основную часть и несколько обновлений . GnuWin32 имеет более поздние версии, чем UnxUtils, но требует поддержки файлов (например, DLL)

MSYS и MinGW похоже были устарели от MSYS2 и MinGW-W64, так что я никогда на них не смотрел.

Некоторые общие проблемы на Cygwin & MSYS2

Что касается терминала

Mintty - это терминал, используемый на Cygwin, MSYS2 и их производных. Следует помнить, что если вы используете Windows native консольные программы, то это не безболезненная замена командной строки Windows Command Prompt. В то время как программы с простым текстовым выводом обычно работают нормально, интерактивные и полноэкранные часто имеют проблемы. Читайте подробнее на главной странице Mintty , а также прочитайте запись “Некоторые родные консольные программы не работают при запуске из Git Bash” на Git for Windows FAQ . Эта запись содержит следующие рекомендации, которые следует делать, когда вы сталкиваетесь с такого рода проблемами:

Есть несколько методов работы с этими проблемами:

  • Запускайте программы, у которых есть проблемы, с помощью утилиты winpty . Это позволяет продолжать использовать более красивый терминал mintty, но может стать громоздким, если Вам понадобится обходной путь для многих программ.
  • [используйте cmd.exe] и настройте его на “Quick Edit”, разумный размер и прокрутку и подходящий шрифт юникода. Вам все равно придется жить с другими причудами [cmd.exe].
  • установка и использование Conemu .

Другие проблемы

Следует помнить о двух наиболее важных вещах:

  1. есть обмен между властью и трудными для отладки проблемами. Чем мощнее решение, тем больше вещей может пойти не так, как кажется на первый взгляд не имеющим отношения к Вашему Linux-слою.

  2. если у вас нет большого опыта работы с Linux, не используйте более мощные решения, такие как Cygwin/MSYS2/MinGW

UnxUtils и GnuWin32 имеют наименьшую мощность, но также и наименьший потенциал причинения головной боли. Cygwin и подобные решения будут превосходить планку как по мощности, так и по головной боли. Cmder находится где-то посередине. Итак, когда вам нужны самые мощные решения, хорошенько выспитесь и будете полностью сконцентрированы. Избегайте использования мощных решений при тестировании чего-то нового и, возможно, нестабильного. Также не забывайте, что решения средней сложности, такие как cmder, не безупречны.

Проблема теневых оконных команд Linux является распространенной причиной проблем с отладкой в таких решениях, как Cygwin/MSYS2/MinGW. Вот пример: У меня был .bat-файл, в котором использовалась команда таймаута. Когда он запускается под Cygwin, он не работает, потому что таймаут - это тоже команда Linux, но с другим синтаксисом. После того, как я обнаружил проблему, я могу добавить PATH=… в верхнюю часть .bat-файла, чтобы убедиться, что команда windows имеет приоритет. Но потом я получил еще более загадочную “Input redirection is not supported” ошибку и решил обходной путь, прежде чем найти причину.

Вот пример проблемы с cmder. Я запускал Windows версию unison в Cmder и при некоторых особых условиях она зависала с absolutely no error message. Одна и та же команда всегда выполнялась идеально под cmd.exe. Забавно, что она также отлично работала под Cygwin (на самом деле, если у вас есть Unicode имена файлов, то терминал Cygwin лучше, чем cmd.exe, потому что cmd.exe часто отображает юникодный текст в неверном виде).

Об этом руководстве

В течение 2017-05 годов мне надоело не понимать различий вышеперечисленных инструментов, хотя некоторые из них я использую уже давно (в основном CygWin и cmder, но никогда не в целях разработки). Поэтому я потратил несколько часов, чтобы походить по ландшафту. Это руководство является результатом записей, которые я сохранил. Я не эксперт в этой области, но я очень старался найти всю необходимую информацию, прочитать ее критическим взглядом и четко представить наиболее важные части. Пожалуйста, прокомментируйте, если что-то покажется мне неправильным, и я сделаю все возможное, чтобы исправить это.

Наконец-то извините за некоторые терминологические проблемы: В этом тексте я иногда использую термин Linux вместо UNIX или POSIX. Я знаю, что это не одно и то же, но очень трудно отличить их, когда подходишь к теме с такой большой дистанции. Даже когда это не сложно, требуется время, которого у меня нет ;-).

10
10
10
2013-10-30 12:46:07 +0000

Предлагаю скачать и установить minimal набор из MinGW , а также минимальный набор MSYS. Инсталлятор MinGW дает вам простой графический интерфейс, позволяющий выбирать, какие пакеты вы хотите установить. Если все, что вы хотите - это BASH, то установка не займет более нескольких мегабайт.

UPDATE: Я перешел на MSYS2 , который гораздо более продвинутый и имеет порт инструмента ArchLinux pacman для управления пакетами. В инсталляторе MSYS2 есть все, что вам нужно, плюс он использует mintty , что абсолютно идеально .

10
10
10
2013-11-20 01:00:47 +0000

Там же C доступно на GitHub . Он интегрируется в командную строку windows с помощью крючковых библиотек.

Из описания проекта:

Clink сочетает в себе родную оболочку Windows cmd.exe с мощными возможностями редактирования из командной строки библиотеки GNU Readline, которая предоставляет богатые возможности по завершению, истории и редактированию строк.

(так что он не предоставляет возможностей языка bash-as-a-programming-language или любых других Unix-функций)

я использую Linux на работе и иногда нахожусь в командной строке cmd, которая ведет себя не так, как я ожидал от Bash. С помощью Clink я могу преодолеть некоторые из этих недостатков.

В последнее время я также обнаружил многообещающий, но еще не ‘can-do-all’ проект под названием flinux , который эмулирует функции системы Linux и предоставляет некую систему поверх нее (в настоящее время на основе Arch Linux).

7
7
7
2013-06-15 17:07:20 +0000

В дополнение к тому, что сказал фаффафф ](https://stackoverflow.com/a/17123343/1743811), Git for Windows включает Bash и некоторые распространенные программы командной строки Linux (например, Vim , sed , и gawk ). Она основана на MSYS . Хотя версия программ старая, например, Bash - версия 3.1. Cygwin будет иметь более свежие версии утилит.

я также использую ConEmu в качестве терминального эмулятора (в основном для подсветки синтаксиса в Vim, табличных страниц и более легкой копировально-пастеризации). console2 также является еще одним популярным терминальным эмулятором, хотя я его еще не пробовал.

2
2
2
2015-06-16 22:50:19 +0000

Это одна из первых вещей, которые я делаю, когда настраиваю новую машину Windows: Функциональная и элегантная консоль в Windows

1
1
1
2015-06-19 15:44:31 +0000

Я только что попробовал с Babun , который интегрировал Cygwin внутренне, и на вкус мне нравится :)

Файл загрузки немного большой, около 250 MB. Но установка проста; не нужно ничего настраивать, а просто работает!

Похожие вопросы

3
6
10
19
7