And*_*Mao 29 windows linux ubuntu windows-10 windows-subsystem-for-linux
适用于 Linux 的 Windows 子系统(WSL) 非常适合使大多数命令行 Linux 工具可用并且无需修改即可在 Windows 上运行。然而,当人们想要
问题是 Windows 应用程序无法修改虚拟 lxss 文件系统内的文件。已知直接修改这些文件会导致各种问题。
因此,在使用 WSL 进行开发时,似乎只有两个次优选择:
将项目存储在 lxss ( /home/foo) 下。正常的工具链工作正常。但是,编辑仅限于基于终端的 Vim/Emacs 或任何可以在janky X server下运行的东西,这不如在 Windows 上运行的本机编辑器流畅。
将项目存储在 Windows 文件系统 ( /mnt/c/Users/foo) 下。现在任何基于 Windows 的编辑器都可以用于开发。然而,基于 Linux 的工具链是脆弱的,因为它不是为在“网络驱动器”上使用而设计的,并且可能会导致文件监视或数据库出现问题。
有什么方法可以在这里两全其美——也就是说,能够使用本机 Windows 应用程序进行编辑,但仍然让 Linux 工具链像在本地驱动器上一样正常工作?
微软最近为此添加了全面支持,应该会在 2019 年 4 月(19H1)更新中全面提供。一旦准备就绪,只要 Linux 发行版正在运行,9P 服务器就会在后台运行。9P 服务器将能够处理 Linux 文件系统元数据,而 Windows 将能够将其视为网络驱动器,以便可以安全地访问它。您可以在https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/阅读它。
借助新功能,只要通过 9P 服务器,您就可以从 Windows 安全地访问 Windows 和 Linux 文件系统文件。这将从 WSL 内部本地处理。例如,从 WSL 命令行,您将能够code /mnt/c/Users/username/src/windows-file.txt在 VS Code 中键入以打开 Windows 文件,或在 VS Code 中键入code /home/username/src/linux-file.txt以打开 Linux 文件。
如果您不是 Windows 预览体验计划的一部分,您将无法访问它,因此您仍然必须使用旧方法,例如 wslpath。
wslpath 将在 Windows 和 Linux 样式的路径之间进行转换,因此您可以轻松地从 WSL 命令行打开 Windows 文件。根据https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689,它将拒绝转换 Linux 文件系统路径(即 %AppData%\lxss),因为没有 9P 从 Windows 修改这些文件是不安全的. 这意味着您无法打开/home/username/src/linux-file.txt,但可以使用code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)".
过去,有许多第三方工具可以执行相同的转换,但是 wslpath 本身就是ls -l /bin/wslpath这样做的——事实上,这表明它只是一个指向 /init 的链接。
我相信比我聪明的人都看过这个问题。但我会回答它。老实说,我相信目前的答案是否定的。除了你提到的(据我所知)之外,没有更好的方法可以两全其美。
我确信这不是任何人想要的答案,但我认为这是正确的答案。我知道微软正在努力让这一点变得更加顺畅,但目前还没有实现。
| 归档时间: |
|
| 查看次数: |
21844 次 |
| 最近记录: |