BASH – оболочка пользователя подсистемы Windows для Linux (WSL) в Windows 10.



Начиная с 2016 в Windows 10 появилась возможность использования подсистемы Windows для Linux (WSL - Windows Subsystem for Linux), позволяющей легко и просто установить из Microsoft Store некоторые дистрибутивы Linux, в том числе Debian, Ubuntu, Kali, Suse. Подробности - Linux в среде Windows 10. При использовании WSL, пользователь получает не изолированную виртуальную машину с Linux, а интегрированную в Windows подсистему с возможностью выполнения утилит командной строки из обеих ОС, запуск программ одной ОС из среды другой и т.п. Кроме того, WSL предоставляет пользователю Windows 10 возможность использования нескольких дистрибутивов Linux одновременно.

bash.exe - утилита командной строки в подсистеме Windows для Linux (Windows Subsystem for Linux), обеспечивающая оболочку bash пользователя (shell) операционной системы Linux. Представляет собой командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash также может читать команды из файла, который называется скриптом или сценарием. Нужно отметить, что команда разработчиков подсистемы WSL, в том числе и bash.exe, проделала огромную работу над программой, и с каждым новым релизом Windows 10, ее возможности становятся все более приближенными к возможностям классической оболочки bash Linux, и приобретают дополнительные качества, направленные на обеспечение максимальной совместимости Windows и Linux.

Формат командной строки:

bash [длинные опции GNU] [опции] ...

bash [длинные опции GNU] [опции] файл_со_скриптом...

Длинные опции GNU:

--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--rcfile
--restricted
--verbose
--version

Опции оболочки:

-ilrsD или -c команда или -O короткие параметры ( только при запуске)

-abefhkmnptuvxBCHP или опция -o

Для получения дополнительной информации о параметрах командной строки используется команда:

bash -c "help set"

Для получения подсказки по внутренним командам bash используется команда:

bash -c help команда

В системе могут быть установлены несколько дистрибутивов Linux, и один из них является дистрибутивом по умолчанию. Утилита работает именно с данным дистрибутивом. Список зарегистрированных в системе дистрибутивов можно получить с помощью команд:

wslconfig /l
или

wsl --list

Первым в списке дистрибутивов отображается дистрибутив по умолчанию:

kali-linux (по умолчанию)
Ubuntu
SLES-15
ubuntu2
Ubuntu-18.04

Дистрибутив по умолчанию можно сменить с помощью команд wsl или wslconfig:

wsl --setdefault kali-linux - определить дистрибутив kali-linux дистрибутивом по умолчанию.

wslconfig /setdefault ubuntu - определить дистрибутив ubuntu дистрибутивом по умолчанию.

При запуске bash.exe без параметров, программа выполняется в интерактивном режиме, ожидая ввода команд пользователем. Строка приглашения содержит имя пользователя, компьютера и текущий каталог, унаследованный из среды windows:

root@win10n:/mnt/c/WINDOWS/system32

Логические диски Windows монтируются в среде Linux в точки монтирования /mnt/c для диска C:, /mnt/d для диска D: и т.д. Путь /mnt/c/WINDOWS/system32 соответствует C:\WINDOWS\system32 в Windows. Оболочка для дистрибутива Ubuntu запускается в контексте учетной записи суперпользователя root, но, например, для kali-linux - в контексте учетной записи пользователя.

Для просмотра переменных окружения можно воспользоваться командой env. Пример выводимой информации:

SHELL=/bin/bash
WSL_DISTRO_NAME=kali-linux
NAME=Win10n
PWD=/mnt/c/WINDOWS/system32
LOGNAME=user
HOME=/home/user
LANG=en_US.UTF-8
TERM=xterm-256color
USER=user
SHLVL=1
WSLENV=
PATH=/usr/local/sbin:/usr/local/bin: /usr/sbin:/usr/bin:/sbin:/bin:/usr/games: /usr/local/games: /mnt/c/WINDOWS/system32: /mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem: /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/: /mnt/c/WINDOWS/System32/OpenSSH/: /mnt/c/Users/apb/AppData/Local/Microsoft/WindowsApps
HOSTTYPE=x86_64
_=/usr/bin/env

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

Работу в среде выбранного дистрибутива Linux следует начать с обновления пакетов программ, например, для пользователя kali-linux:

sudo apt update

sudo apt upgrade

Для случая выполнения оболочки bash в контексте учетной записи root, команда sudo не нужна:
apt update

apt upgrade

Для удобства работы можно установить файловый менеджер Midnight Commander:

apt install mc

И, например, на левой панели отобразить файловую структуру Linux, а на правой – файловую структуру Windows:

Midnight Commander


Оболочка позволяет выполнять запуск программ как Linux, так и Windows:

ping yandex.ru - выполнить опрос узла yandex.ru утилитой ping из среды Linux

/mnt/c/WINDOWS/system32/notepad.exe - запустить приложение Блокнот из среды Windows

В случае запуска из текущего каталога, полный путь указывать не обязательно:

./notepad.exe

По соображениям безопасности, текущий каталог в Linux не включается в пути поиска исполняемых файлов, и должен быть указан явно - ./

Выполняемые командой bash скрипты (сценарии) могут находиться как в файловой системе Linux, так и в файловой системе Windows:

bash /home/user/scripts/test.sh - выполнить скрипт test.sh из домашнего каталога пользователя user Linux

bash /mnt/d/scripts/test.sh - выполнить скрипт test.sh из каталога файловой системы Windows D:\scripts

bash ./test.sh - выполнить скрипт test.sh из текущего каталога файловой системы (Windows или Linux).

Подсистема Windows для Linux не предоставляет пользователю полноценное ядро Linux, по крайней мере, на момент реализации в Windows 10.0.18362.295. По этой причине, например, невозможно установить драйверы ядра (kernel drivers), что накладывает определенные ограничения на использование программного обеспечения, которому необходим доступ к оборудованию – датчикам температуры, напряжения, контроля скорости вращения вентиляторов и т.п. (lm-sensors и ему подобное ПО).

При работе с командной строкой в Windows 10 вместо bash удобнее пользоваться новой командой wsl, а также новым Терминалом Windows вместо стандартной консоли.









Весь список команд CMD Windows



Рейтинг@Mail.ru