Препоръчано, 2024

Избор На Редактора

Как Linux Bash Shell работи на Windows 10

С издаването на годишната актуализация за 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 GUI приложения или среди като Gnome или KDE, въпреки че това е възможно и с определени хакове. След като изясним това, нека да разгледаме как работи обвивката на Linux в Windows 10.

Подсистема на Windows за Linux (WSL)

Според официалната документация, “WSL е колекция от компоненти, която позволява на родните двоични файлове на Linux ELF64 да работят под Windows”. Това се постига чрез внедряване на виртуализиран интерфейс на ядрото на Linux върху ядрото на Windows NT. Тоест, той не използва никакъв код от самото ядро ​​на Linux - всеки път, когато дадено приложение прави Linux-специфично системно обаждане (syscall), WSL го превежда на еквивалентния Windows syscall, който след това извършва цялото повдигане.

Разлики от виртуалните машини и Cygwin

Сега нека разгледаме как Linux Bash Shell в Windows 10 е различен в сравнение с подобни на виртуалните машини и Cygwin.

Виртуални машини

Може би си мислите: „Защо да използвате това? Защо просто не използваме Linux VM в Windows? ”

В сравнение с виртуалната машина, WSL използва по-малко ресурси . Той също така ви позволява да работите с вашите файлове, както бихте направили при Linux, като същевременно ви дава пълен достъп до основната файлова система на Windows, без да се налага да разчитате на споделени папки или мрежови дялове.

Cygwin

Друг популярен метод за пускане на популярни Linux / Unix-подобни инструменти в Windows е Cygwin. Най-голямата разлика между двата подхода е, че Cygwin не е начин да се изпълняват двоични файлове на Linux в Windows. Той предоставя само набор от GNU и инструменти с отворен код, които осигуряват функционалност, подобна на Linux дистрибуцията в Windows.

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

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

Йерархия на файловата система

WSL се инсталира под текущата директория %LocalAppData%\lxss\rootfs . Това е известно като WSL среда и действа като Linux (/ root) директория. Например, ако вашето потребителско име в Windows е beebom, главната директория на Linux ще бъде разположена в C:\Users\beebom\AppData\Local\lxss\rootfs. Това означава, че всеки потребител на Windows може да има собствена WSL среда и може да прави промени, като apt-get install пакети за apt-get install, без да засяга останалите потребители на Windows.

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

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

Когато за първи път инсталирате WSL, той ще ви подкани да създадете нов потребител по подразбиране на Linux. Този потребител не трябва да има същото име като текущия потребител на Windows и като цяло се третира като отделна единица. Можете дори да създадете множество потребители на Linux, контролирани от един потребител на Windows.

Възможно е да се получат привилегии на sudo командата 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 (с актуализацията на годишнината). Наред с работата си научихме и как е различна и по-добра от традиционните методи за изпълнение на Linux-специфични команди в Windows. Така че, ако винаги сте искали да използвате команди на Linux, започнете и ако имате въпроси, коментари или съвети, не забравяйте да ни уведомите в раздела за коментари.

Top