5

Я некоторое время осматривался, но не смог выяснить, в чем разница между новым Bash For Windows 10 и ssh в Ubuntu, работающем на виртуальной машине (с установленными дисками Windows).

У него больше интеграции с Windows, или доступ и простота установки только через установку Ubuntu, запущенную на виртуальной машине?

2 ответа2

7

Разница, по сути, в том, что между виртуализацией на уровне операционной системы и виртуализацией на основе гипервизора.

Когда вы запускаете bash из меню «Пуск» Windows, вы получаете текстовое окно с доступом к полной среде командной строки Ubuntu, откуда вы можете установить любой пользовательский пакет Ubuntu.

В отличие от того, что вы получите с традиционной виртуальной машиной, ядро Linux не загружается и не запускается, поэтому запускать его намного быстрее и легче. Собственные двоичные файлы Ubuntu просто выполняются ядром Windows (именно новая его подсистема). Другое отличие состоит в том, что нет графической интеграции из коробки. В случае виртуальной машины у вас есть доступ к окну (или полноэкранному) представлению текстовой и графической консоли виртуального оборудования, но с помощью Windows bash это больше похоже на удаленное подключение к серверу из эмулятора терминала Windows. Тем не менее, вы можете запускать графические приложения Linux, если вы запускаете сервер X11 в Windows. Поскольку ядро Linux не задействовано, вы не можете использовать модули / драйверы Linux для доступа к вашему оборудованию, к нему будут обращаться нативные Windows. Это имеет много последствий, например, в настоящее время нет поддержки символических ссылок и проблем с длинными именами файлов и регистром имен файлов, нет inotify. Здесь нет последовательности загрузки, как на реальной машине или на традиционной виртуальной машине, это означает, что ни один сервис не запускается автоматически при запуске bash . Это немного похоже на запуск bash в Docker.

Наконец, эта работа еще не завершена, поэтому есть много возможностей для улучшения. Вы можете иметь представление о том, о чем пользователи больше всего сообщают на этом сайте https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windows

Также посмотрите FAQ: https://msdn.microsoft.com/en-us/commandline/wsl/faq

Обратите внимание, что первый пользовательский запрос "Давайте запустим процессы Windows из Bash" - это то, что вы не можете сделать ни с виртуальной машины Linux, работающей в Windows.

0

Все три являются инструментами, предназначенными для разных целей или целей. Принятие решения, которое является частично предпочтением и частично правильным или адекватным выбором инструмента.

Я не использовал его, но из того, что я читал о Windows BASH, которая очень ценна, это слегка изолированная среда оболочки BASH. Он не имеет доступа к информации системного уровня или API, как, например, в Powershell. Он не предоставляет UNIX-подобную командную среду и не предоставляет SSH. Но он может запускать программы и приложения так же, как BAT-файлы, но со сценариями, написанными с использованием синтаксиса BASH.

Cygwin - это основанная на библиотеке абстракция (более или менее) полной среды POSIX в стиле UNIX. Он может иметь доступ к информации на уровне системы и API, если такой интерфейс написан, и многие имеют. Это больше похоже на среду в стиле UNIX, но есть очевидные приспособления, которые необходимо сделать, чтобы приспособиться к «оконным механизмам». Например, для доступа к диску Windows, например, D, это /cygdrive/d/ . Разделителями каталогов в пути являются / а не \ а доступ к сетевому диску - //host/share/path... Я использую его каждый день на работе и считаю его очень полезным для моего мышления в стиле UNIX.

Запуск Linux на виртуальной машине - это полная установка и (почти) полная изоляция от хост-системы, за исключением определенных, определенных точек, таких как сеть, клавиатура / мышь, память и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .