В чем разница между терминалами Bash и Ubuntu в Windows 10?

Я недавно установил Ubuntu для Windows, и теперь в меню "Пуск" есть 2 новых пункта:

Bash Bash Этот терминал открывается в:

root@myName-PC:/mnt/c/Windows/System32#

Ubuntu Ubuntu Этот терминал открывается в:

root@myname-PC:~#

Какая разница между двумя?

Например, мы хотим установить Git и Utils, затем RVM (Ruby) клонировать проект Git и развернуть его через SSH с помощью команд Capistrano. Должно ли это работать с Bash или Ubuntu, как указано выше?

Кроме того, должны ли команды выполняться в папке system32 или C:/ внутри терминала?

Спасибо

3 ответа

Терминал Bash выполнен в старом стиле (до Windows 10 v1790 aka Fall Creator Update). Он проживает в %LocalAppData%\Lxss и управляется с помощью lxrun.exe,

Терминал Ubuntu - это новый стиль, загруженный с Microsoft $tore. Часть запуска - приложение для Windows (%ProgramFiles%\WindowsApp) и его данные находятся в %LocalAppData%\Packages,

Это две изолированные установки Windows Subsystem для Linux, которые не мешают друг другу. Практически вам нужен только один из них, поэтому выбирайте один по своему вкусу.

Мне лично не нравится версия Магазина Windows, так как ее легко удалить, что не очень хорошо для продуктивной среды.

Я пытался удалить устаревшую версию "Bash on Windows" и не смог, потому что lxrun.exe недоступно в моей системе. Но в случае, если это кому-то нужно, вот как:

При желании вы можете вручную удалить свой устаревший экземпляр. Это может потребоваться, если у вас возникли проблемы с удалением устаревшего дистрибутива с помощью lxrun.exe или если вы работаете с Windows 10 Spring 2018 Update (или более поздней версии), которые не поставляются с lxrun.exe.

Чтобы принудительно удалить ваш старый дистрибутив WSL, удалите %localappdata%\lxss\ папка (и все ее содержимое) с помощью проводника Windows или командной строки: (с помощью PowerShell)

rm -Recurse $env:localappdata/lxss/

Git bash против Ubuntu bash.

По сути ничем особо не отличается кроме разве что версий bash. Потому что баш есть баш. Скорее всего, разные версии bash были установлены в разное время для разных целей на ПК. И они также, вероятно, будут найдены в разных папках на ПК.

Запустите следующий код из двух разных оболочек. Это возвращает версию bash:

      echo "$BASH_VERSION"

На этом ПК с помощью двух терминалов (MinGW и Ubuntu) были возвращены следующие версии bash: (см. ссылку на изображение ниже)

      5.0.17(1) - release
4.4.23(1) - release

Вполне вероятно, что большинство людей, использующих ПК, которые существуют некоторое время назад, обнаружат, что на их ПК установлены две (или более) разные версии bash. На этом ПК некоторое время назад была установлена ​​более старая версия bash.

Эта старая версия bash могла быть установлена, когда Cygwin был установлен на этом ПК. Или, может быть, старая версия bash была установлена, когда давным-давно был установлен Git. Сейчас это действительно не имеет значения. На этом ПК bash находится как минимум в следующих местах:

      C:\cygwin64\bin\bash.exe

C:\Program Files\Git\bin\bash.exe

C:\Program Files\Git\git-bash.exe

Windows 10 на этом ПК была обновлена. В частности, ядро ​​WSL было обновлено с WSL до WSL2. Часть этого обновления включала в себя включение некоторых функций Windows, в том числе: Подсистема Windows для Linux.

Некоторое время назад на этом ПК была установлена ​​старая (виртуальная) версия Ubuntu (18.04). Но эта старая версия Ubuntu ушла с этим обновлением. Это обновление WSL2 меняет способ работы Linux (Ubuntu) на этом ПК. После обновления WSL2 Ubuntu была установлена ​​из Магазина Microsoft. Это Убунту 20.04.

Это обновление WSL2 и недавно установленная версия Ubuntu также установили более новую версию bash на этот компьютер. И эта более новая версия bash — это более новая версия bash, показанная выше.

Еще один хороший способ понять разницу между этими двумя версиями bash — ввести в каждую оболочку следующее:

      type ping

Результат должен ясно показать, что одна версия bash предоставляет исходный код из Windows, а другая версия bash предоставляет исходный код из Ubuntu.

      ping is /c/windows/system32/ping
ping is /usr/bin/ping

Иногда картинка стоит больше, чем тысяча слов. Ниже прикреплены два новых терминала Windows рядом.

Эти терминалы показывают две разные версии bash. Echo возвращает старую версию bash, используемую в оболочке MinGW, а Echo возвращает более новую версию bash, используемую в оболочке Ubuntu.

https://stackru.com/images/02aa4154d4d70bf394efe06a58ae6887465e434b.png

Другие вопросы по тегам