Выпустив 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, начните работу и если у вас есть вопросы, комментарии или советы, обязательно сообщите нам об этом в разделе комментариев.