如果你是一个涉及Linux的Windows开发人员(正如我过去十年所做的那样),你可能已经走下了以下路径之一:
--在旧的Windows PC上安装Linux,或在同一磁盘上进行双启动。
--安装Oracle的免费VirtualBox,然后在虚拟机(VM)上安装Linux。
--在Windows Pro上安装Hyper-V,然后在VM上安装Linux。
最后两个使得尝试不同版本的Linux非常容易,或者将它们用于特定任务。 (我甚至还有第二个用于开发的Windows 10 Pro VM - 不要笑 - Delphi应用程序; VM中的旧开发比每次更换PC时重新安装Delphi和所有组件更方便,而且备份也更容易。)
虚拟机比摆弄多台PC,显示器和键盘更方便。 但方便的价格是你需要额外的RAM; 我目前的PC配备64 GB,运行VM后我看到它达到29 GB(16 GB可能是您需要的最小值)。
但现在有第四条路径:Linux的WSL(或Windows子系统)。
适用于Linux的Windows子系统
首先,转到“控制面板”中的“程序和功能”,然后在Windows功能中打开Windows子系统Linux,或者在提升的PowerShell中运行以下PowerShell命令(即以管理员身份运行)。 在任何一种情况下,您都需要重新启动。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
现在我们需要Linux;我去了Ubuntu,你可以在微软商店找到(惊喜!)。鉴于微软和Linux社区之间存在着不良血统的历史,从该店面下载Linux是一种奇怪的感觉(并且它是一个适度的下载 - 195 MB)。它只会安装在系统驱动器上,因此请确保您有可用空间。
输入新的用户名和密码后,您将登录到bash shell。我做的第一件事是典型的sudo apt更新,然后进行升级以使所有内容都是最新的。
使用文件
Windows和Linux / Unix在文本文件方面总是存在差异。 Windows使用CR / LF(代码13和10)来标记文件的结尾,而Linux只使用LF。但是当谈到WSL子系统上的文件时,您不能直接在Windows中编辑或创建它们。这绝对不是,因为它会破坏事物并需要重新安装Linux。
如果您希望阅读这些文件,请事先备份或复制。例如,在Ubuntu上,Linux文件系统位于Windows中:
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
您将看到与在Linux中执行此操作相同的文件夹:
ls /
如果您在Windows中并希望在Linux上快速运行命令,这是一种方法:
dir | wsl ls /
该命令通过管道传输给WSL,然后WSL运行它;这和ls /相同。
通过SSH连接
尽管openSSH服务器可以正常工作,但您可能会遇到连接它的问题。值得庆幸的是,有人找到了解决此问题的方法。
我一直使用WinSCP来远程连接时浏览Linux文件系统,并且在完成变通后,它对我来说表现很好。您可以使用它来复制文件,因为它不是直接连接,而是通过SSH路由。
如果您想从Windows进入Linux终端,只需从命令行运行Bash即可。 Linux中的exit命令将返回Windows命令行。
从Linux访问驱动器
这些设备存储在/ mnt;在WinSCP中浏览/ mnt显示您的驱动器(c,d,e等)。您可以使用cp命令将PDF从Windows复制到Linux上的主文件夹,然后使用WinSCP将其复制回Windows;之后,你应该能够阅读它。只要您使用的是Linux并使用cp,就可以直接从Windows复制文件。
结论
这是一种访问Linux的便捷方式,只要您不直接从Windows复制或编辑Linux文件即可。与Hyper-V不同,与WSL一起使用的RAM非常低,因此更适合在具有4 GB或8 GB RAM的PC上运行。
无需启动Hyper-V,然后启动并连接到VM。我可以看到安装Apache,PHP和MySQL并将其用作Web开发登台/测试服务器。除非我弄错了,否则Windows正在共享其端口(如22用于SSH)??,因此端口80应该是可访问的。
但是,我仍然发现备份VM比WSL系统更容易,因为后者的过程没有很好地记录。可能只需要在c:\ users \ appname \ Local \ packages中备份带有Ubuntu的Canonical包(这是1.13 GB,所以不要太大)。
Windows和Linux之间的互操作性非常显着;但不要忘记你只限于非GUI Linux。 WSL不支持它(虽然你可以安装一个X-Server;这个AskUbuntu回答建议你可以使用VcXsrv,一个开源的X-Server,并安装Ubuntu桌面)。