Рекомендуем, 2024

Выбор редакции

Как работает Linux Bash Shell в Windows 10

Выпустив Anniversary Update для Windows 10, Microsoft анонсировала подсистему Windows для Linux (WSL) - способ запуска реального встроенного Bash в Windows 10, который поддерживает выполнение собственных двоичных файлов Linux. Это достигается путем запуска образа Ubuntu Linux в пользовательском режиме поверх Windows.

Это означает, что вы можете запускать инструменты командной строки Linux, такие как ls, grep, top и chmod . Поскольку вы работаете с подлинной Ubuntu, запуск lsb-release -a даст вам следующий вывод:

Вы можете использовать apt-get и друзей для установки таких утилит, как vim, git, screen, tmux или даже поиграть в игру nethack:

Имейте в виду, однако, что эта система находится в стадии бета-тестирования и не предназначена для серверных рабочих нагрузок. Это всего лишь инструмент для разработчиков (и энтузиастов), чтобы протестировать свои Linux-ориентированные приложения на Windows без изменений. Это также не инструмент, предназначенный для запуска приложений или сред Linux с графическим интерфейсом, таких как Gnome или KDE, хотя это возможно и при определенных действиях. Выяснив это, давайте посмотрим, как работает оболочка Linux в Windows 10.

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

Согласно официальной документации, «WSL - это набор компонентов, которые позволяют двоичным файлам Linux ELF64 работать в Windows». Это достигается путем реализации виртуализированного интерфейса ядра Linux поверх ядра Windows NT. То есть он не использует какой-либо код из реального ядра Linux - всякий раз, когда приложение выполняет специфический для Linux системный вызов (syscall), WSL переводит его в эквивалентный системный вызов Windows, который затем выполняет всю тяжелую работу.

Отличия от виртуальных машин и Cygwin

Теперь давайте посмотрим, как Linux Bash Shell в Windows 10 отличается от виртуальных машин и Cygwin.

Виртуальные машины

Вы можете подумать: «Ну, зачем это использовать? Почему бы просто не использовать виртуальную машину Linux в Windows? »

По сравнению с виртуальной машиной WSL использует меньше ресурсов . Он также позволяет вам работать с вашими файлами так же, как в Linux, предоставляя вам полный доступ к базовой файловой системе Windows без необходимости использования общих папок или общих сетевых ресурсов.

Cygwin

Еще один популярный метод запуска популярных Linux / Unix-подобных инструментов в Windows - это Cygwin. Самое большое различие между этими двумя подходами заключается в том, что Cygwin не является способом запуска собственных двоичных файлов Linux в Windows. Он предоставляет только набор инструментов GNU и Open Source, которые обеспечивают функциональность, аналогичную дистрибутиву Linux в Windows.

С другой стороны, инструменты WSL - это встроенные исполняемые файлы Linux ELF-64, работающие в Windows. Например, выполнение команды apt-get install emacs в WSL загрузит и установит те же файлы, что и при установке Ubuntu 14.04, из официальных репозиториев Ubuntu.

Пользователи, разрешения и файловые системы в WSL

Иерархия файловой системы

WSL устанавливается в %LocalAppData%\lxss\rootfs текущего %LocalAppData%\lxss\rootfs пользователя %LocalAppData%\lxss\rootfs . Это называется средой WSL и действует как корневой каталог Linux « / ». Например, если ваше имя пользователя в Windows - beebom, корневой каталог Linux будет расположен в C:\Users\beebom\AppData\Local\lxss\rootfs. Это означает, что каждый пользователь Windows может иметь свою собственную среду WSL и может вносить изменения, такие как пакеты программного обеспечения apt-get install, не затрагивая других пользователей Windows.

Можно получить доступ к базовой файловой системе Windows в WSL. Все диски смонтированы в /mnt. Например, C:\ монтируется в /mnt/c, D:\ монтируется в /mnt/d и т. Д.

Пользователи и разрешения

Когда вы впервые устанавливаете WSL, он предложит вам создать нового пользователя Linux по умолчанию. Этот пользователь не обязательно должен иметь то же имя, что и текущий пользователь Windows, и вообще рассматривается как отдельный объект. Вы даже можете создать несколько пользователей Linux, управляемых одним пользователем Windows.

Получить привилегии root можно с помощью команды sudo . Имейте в виду, что наличие root в WSL влияет только на права пользователя в среде Linux и файловой системе - они не влияют на предоставляемые привилегии Windows. Например, сеанс WSL с правами администратора Windows может cd /mnt/c/Users/Administrator а сеанс Bash без прав администратора будет отображать «Отказано в доступе». Ввод sudo cd /mnt/c/Users/Administrator не предоставит доступ к каталогу администратора, так как разрешения ограничены Windows.

Особенности файловой системы для Linux

Linux является чувствительной к регистру системой. Это означает, что photo.png и Photo.png обрабатываются как два разных файла. Хотя Windows по умолчанию не чувствительна к регистру, она все же учитывает регистр. Это означает, что хотя photo.png и Photo.png не рассматриваются как два отдельных файла, он, безусловно, осознает разницу в случае.

WSL обрабатывает чувствительность к регистру так же, как в Linux. Можно даже создать два файла, чье имя отличается в каждом конкретном случае вне среды WSL. Имейте в виду, однако, что многие приложения Windows не могут справиться с такими ситуациями и не могут открыть один или оба файла.

Аналогично, символические ссылки поддерживаются, если вы используете файловую систему NTFS. Однако символические ссылки будут работать только внутри WSL и не могут быть разрешены другими приложениями Windows.

Linux также поддерживает почти все специальные символы в именах файлов, в то время как Windows более строгая. WSL, однако, позволяет использовать такие специальные символы при условии, что они ограничены средой системы Linux.

Готовы запустить командную строку Linux в Windows?

Итак, вот как Ubuntu Bash или Linux Bash Shell, также известный как Windows Subsystem for Linux, работает в Windows 10 (с обновлением Anniversary). Наряду с его работой мы также узнали, чем он отличается и лучше, чем традиционные методы запуска специфичных для Linux команд в Windows. Поэтому, если вы всегда хотели использовать команды Linux, начните работу и если у вас есть вопросы, комментарии или советы, обязательно сообщите нам об этом в разделе комментариев.

Top