- BASH – оболочка пользователя подсистемы Windows для Linux (WSL) в Windows 10.
- WSL – запуск исполняемых файлов и конфигурирование подсистемы Windows для Linux (WSL) в Windows 10.
- Примеры использования WSL.EXE для запуска приложений.
- Примеры использования WSL.EXE для администрирования дистрибутивов Linux.
BASH – оболочка пользователя подсистемы Windows для Linux (WSL) в Windows 10.
Начиная с 2016 в Windows 10 появилась возможность использования подсистемы Windows для Linux (WSL — W indows S ubsystem for L inux), позволяющей легко и просто установить из 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
или
Первым в списке дистрибутивов отображается дистрибутив по умолчанию:
kali-linux (по умолчанию)
Ubuntu
SLES-15
ubuntu2
Ubuntu-18.04
Дистрибутив по умолчанию можно сменить с помощью команд wsl или wslconfig :
wsl —setdefault kali-linux — определить дистрибутив kali-linux дистрибутивом по умолчанию.
wslconfig /setdefault ubuntu — определить дистрибутив ubuntu дистрибутивом по умолчанию.
При запуске bash.exe без параметров, программа выполняется в интерактивном режиме, ожидая ввода команд пользователем. Строка приглашения содержит имя пользователя, компьютера и текущий каталог, унаследованный из среды windows:
Логические диски 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 /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/usr/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
Для удобства работы можно установить файловый менеджер Midnight Commander :
И, например, на левой панели отобразить файловую структуру Linux, а на правой – файловую структуру Windows:
Оболочка позволяет выполнять запуск программ как Linux, так и Windows:
ping yandex.ru — выполнить опрос узла yandex.ru утилитой ping из среды Linux
/mnt/c/WINDOWS/system32/notepad.exe — запустить приложение Блокнот из среды Windows
В случае запуска из текущего каталога, полный путь указывать не обязательно:
По соображениям безопасности, текущий каталог в 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 вместо стандартной консоли.
Источник
WSL – запуск исполняемых файлов и конфигурирование подсистемы Windows для Linux (WSL) в Windows 10.
В современных версиях операционной системы Windows 10 имеется возможность использования подсистемы Windows для Linux (WSL — W indows S ubsystem for L inux), позволяющей легко и просто установить из Microsoft Store некоторые дистрибутивы Linux, в том числе Debian, Ubuntu, Kali, Suse. Подробности — Linux в среде Windows 10. При использовании WSL, пользователь получает не изолированную виртуальную машину с Linux, а интегрированную в Windows подсистему с возможностью выполнения утилит командной строки из обеих ОС, запуск программ одной ОС из среды другой и т.п. Кроме того, WSL предоставляет пользователю Windows 10 возможность использования нескольких дистрибутивов Linux одновременно.
WSL.exe — утилита командной строки для выполнения программных файлов Linux и административных операций в подсистеме Windows для Linux (Windows Subsystem for Linux). Кроме функции запуска исполняемых файлов, возможности утилиты по управлению дистрибутивами Linux почти полностью соответствуют возможностям утилиты wslconfig.exe
Формат командной строки:
wsl.exe [Аргументы] [Параметры. ] [командная строка]
Параметры командной строки:
Аргументы для запуска двоичного кода Linux:
— Если командная строка не указана, то wsl.exe запускает стандартную оболочку bash дистрибутива Linux, используемого по умолчанию.
— —exec, -e — выполнение указанной командной строки без использования стандартной оболочки Linux.
— — — Передача оставшейся командной строки как есть.
—distribution, -d — Запуск указанного дистрибутива Linux. Параметр DistributionName должен принимать значение имени дистрибутива Linux, присвоенное ему в подсистеме WSL, например SLES-15 для SUSE Linux Enterprise Server 15. Список зарегистрированных в системе дистрибутивов можно получить с помощью команды wsl –list
—user, -u — Запуск от имени указанного пользователя.
Аргументы для управления подсистемой Windows для Linux:
—export — Экспорт дистрибутива DistributionName в TAR-файл FileName
—import — Импорт указанного TAR-файла в качестве нового дистрибутива DistributionName в каталоге InstallLocation
—list, -l [[—all] –running] — отобразить список дистрибутивов Linux, зарегистрированных в системе. При указании параметра —all отображается список всех дистрибутивов, включая те, которые сейчас устанавливаются или удаляются. При указании параметра —running отображается список выполняющихся на данный момент дистрибутивов.
-setdefault, -s — установить указанный дистрибутив в качестве дистрибутива по умолчанию.
—terminate, -t — прекратить выполнение указанного дистрибутива.
—unregister — отменить регистрацию (удалить) указанный дистрибутив.
—upgrade — дистрибутив переводится в формат файловой системы WslFs.
—help — отобразить справку по использованию wsl.exe.
Примеры использования WSL.EXE для запуска приложений.
wsl —help — отобразить подсказку по использованию wsl.exe.
wsl –h — то же, что и в предыдущем примере, но с использованием синтаксиса укороченных параметров.
wsl –list — отобразить список дистрибутивов Linux, зарегистрированных в системе. Пример отображаемой информации:
Распределения подсистемы Windows для Linux:
Ubuntu (по умолчанию)
kali-linux
SLES-15
Ubuntu-18.04
На сегодняшний день перевод сообщений утилиты wsl.exe на русский язык оставляет желать лучшего. Первым в списке зарегистрированных в Windows 10 дистрибутивов Linux отображается дистрибутив, установленный по умолчанию. Именно этот дистрибутив используется для запуска исполняемых файлов Linux, если явно не указано имя другого дистрибутива.
wsl.exe — если параметры командной строки не заданы, выполняется запуск дистрибутива Linux, установленного по умолчанию.
wsl -d Ubuntu — запустить дистрибутив Ubuntu . Для завершения работы в консоли Linux можно использовать команды logout или exit . После запуска дистрибутива отображается стандартный эмулятор терминала Linux с приглашением к вводу команд. Пользователю предоставляется стандартная оболочка bash.
wsl -e ls -l /etc — выполнить команду ls -l /etc для дистрибутива по умолчанию (отобразить содержимое каталога /etc в подробном формате).
wsl -d sles-15 -e ls -l /etc — то же, что и в предыдущем примере, но команда выполняется в среде дистрибутива sles-15
Для идентификации дистрибутива сценариями, можно использовать стандартную для WSL переменную окружения WSL_DISTRO_NAME .
Для просмотра переменных окружения дистрибутива по умолчанию, можно воспользоваться командой:
wsl -e env — отобразить переменные окружения. В текущих версиях утилиты wsl.exe допускается форма командной строки без параметра -e :
Пример отображаемой информации о переменных окружения:
HOSTTYPE=x86_64
LANG=C.UTF-8
WSL_DISTRO_NAME=Ubuntu
USER=root
PWD=/mnt/c/WINDOWS/system32
HOME=/root
NAME=Win10
SHELL=/bin/bash
TERM=xterm-256color
SHLVL=1
LOGNAME=root
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/User/AppData/Local/ Microsoft/WindowsApps
WSLENV=
_=/usr/bin/env
Как видим, текущий каталог, определяемый значением переменной PWD принимает значение, соответствующее текущему каталогу на момент запуска wsl.exe , в данном случае, C:\Windows\System32, что соответствует /mnt/c/WINDOWS/system32 в Linux.
Переменную WSLENV можно применить для совместного использования сценариями Windows и Linux.
Пути поиска исполняемых файлов включают в себя как каталоги файловой системы Windows, так и каталоги Linux.
wsl -d kali-linux -u root ifconfig — отобразить конфигурацию сетевых интерфейсов дистрибутива kali-linux от имени суперпользователя root .
Одновременное применение команд разных ОС с разными переменными окружения и различным синтаксисом может вызывать некоторые трудности, Например, нужно установить и сражу же запустить в среде WSL файловый менеджер Midnight Commander ( mc ). Напрашивается решение объединить установку и запуск в контейнер:
wsl apt-get install mc && mc
Но, интерпретатор команд Windows воспримет специальный символ & как предназначенный командной оболочке Windows и интерпретирует вводимую строку как 2 команды:
Wsl apt-get install mc — установить утилиту mc в среде Linux по умолчанию
mc — выполнить команду mc в среде Windows 10
Чтобы установленная программа mc выполнялась в среде Linux, она должна запускаться с помощью wsl.exe :
wsl apt-get install mc & wsl mc
Кроме того, необходимо учитывать, что имена некоторых команд в Linux и Windows совпадают, а в путях поиска исполняемых файлов присутствуют каталоги обеих операционных систем, а также то, что текущим каталогом на момент выполнения команд Linux, будет каталог, бывший текущим на момент запуска утилиты wsl.exe .
wsl ping ya.ru — выполнение команды ping.ya.ru в среде дистрибутива Linux, установленного по умолчанию.
wsl –e /mnt/c/windows/system32/ping.exe ya.ru — выполнение команды ping.ya.ru в среде Windows 10.
Примеры использования WSL.EXE для администрирования дистрибутивов Linux.
wsl —export kali-linux D:\kali-linux.tar — экспорт дистрибутива kali-linux в TAR-файл D:\kali-linux.tar
wsl —import ubuntu2 D:\linux\ubuntu2 D:\ubuntu.tar — импорт указанного TAR-файла D:\ubuntu.tar в качестве нового дистрибутива ubuntu2 , размещаемого в каталоге D:\linux\ubuntu2. При стандартной установке дистрибутивы Linux устанавливаются в каталог «C:\Users\имя пользователя\Local Settings\Packages»
BR> wsl —list —all — отобразить список установленных дистрибутивов Linux, включая те, которые устанавливаются или удаляются в данный момент времени.
wsl —list –running — отобразить список выполняющихся в данный момент дистрибутивов.
wsl –setdefault ubuntu2 — установить дистрибутив ubuntu2 , в качестве дистрибутива по умолчанию.
wsl -t Ubuntu — завершить работу дистрибутива Ubuntu
wsl —unregister ubuntu — отменить регистрацию дистрибутива Ubuntu
wsl —upgrade Ubuntu — выполнить перевод дистрибутива Ubuntu в формат файловой системы WslFs .
Источник