使用 WSL2 时是否建议将所有 Windows 软件和个人文件移至 ubuntu 文件夹?

使用 WSL2 时是否建议将所有 Windows 软件和个人文件移至 ubuntu 文件夹?

我刚开始学习机器人技术,并开始研究 Linux 世界,因为很多人都推荐它。但我依赖很多 Windows 软件,而这些软件在 Ubuntu 上的支持很差(甚至根本不支持)。所以我决定使用 WSL 2。

但我真的不明白 Windows 和 Ubuntu 安装之间的文件管理是如何进行的。据我所知,Linux 文件夹就像我的 C 盘上的一个分区,所有与 Linux 相关的东西都存储在其中。因此,您通常希望将使用命令行执行任务的文件存储在 Linux/ubuntu 文件夹中以获得更好的性能?(如果我错了,请告诉我)

像这样Microsoft 文档说:

为了获得最快的性能速度,如果您在 Linux 命令行(Ubuntu、OpenSUSE 等)中工作,请将文件存储在 WSL 文件系统中。如果您在 Windows 命令行(PowerShell、命令提示符)中工作,请将文件存储在 Windows 文件系统中。

我已经阅读并观看了有关如何有效使用命令行和包管理器的教程,并希望开始将它们用于我的项目。我的所有项目、解释器/编译器和文本编辑器目前都在 Windows 安装中。假设我现在将这些文件移至 Ubuntu 文件夹,并在使用命令行时获得性能/速度的提升。太棒了!

但是,假设我想开始使用命令行来控制我的整个系统,所有软件和文件最初都安装在 Windows 上。那么我应该将所有软件和个人文件移到 Ubuntu 安装中吗?如果软件是为 Windows 系统安装的,这会导致问题吗?以虚幻引擎为例,该软件针对 Windows 进行了优化,我从 Epic Games 下载时就为 Windows 系统安装了它。将该软件移到 Ubuntu 文件夹会导致问题吗?这是否相当于在纯 Ubuntu 安装上尝试安装虚幻引擎 Windows 安装?(没有 WSL)

另外,如果您有任何推荐阅读和资源供新 Linux 用户分享,我会很乐意学习!

答案1

让我们从问题标题开始:

使用 WSL2 时是否建议将所有 Windows 软件和个人文件移至 Ubuntu 文件夹?

答案是,不是。

我的所有项目、解释器/编译器和文本编辑器目前都在 Windows 安装中。假设我现在将这些文件移至 Ubuntu 文件夹,并在使用命令行时获得性能/速度的提升。

不太清楚您所说的“使用命令行时性能/速度的提高”是什么意思。WSL2 中没有任何东西可以使其本质上比运行 Windows 应用程序更快。事实上,它可能会更慢。WSL2/Ubuntu 数据存储在虚拟 SDD 中,它永远不会像存储它的本机 Windows 文件系统那样快。

当从 Ubuntu 访问 Windows 文件或反之亦然时,WSL2 使用 Plan9 (9P) 网络文件系统。这尚未实现。其他间接级别将会降低性能。

就性能而言,排名如下:

  • 最快:Windows 应用程序访问 Windows 驱动器上的文件/数据。
  • 快速:WSL2/Ubuntu 中的 Linux 应用程序访问 WSL2 文件系统中的文件/数据。
  • 速度较慢:Windows 应用程序访问 WSL2 文件系统中的文件/数据。
  • 最慢:WSL2/Ubuntu 中的 Linux 应用程序访问 Windows 文件系统上的文件/数据。

现在,除非您的应用程序数据密集,否则速度差异通常不会产生影响。但如果您开始在应用程序中读取或写入数百个文件,您就会开始注意到这一点。

我不使用虚幻引擎,但我认为它的一个常见用例是读取许多模型。如果是这样,那么您不希望您的数据(或应用程序)位于 Ubuntu 虚拟文件系统上。

现在轮到你可以在 WSL2 中的 Ubuntu 下安装 Linux 版本的虚幻引擎,但我也不建议这样做。虽然 Linux GUI 应用程序可以在 WSL2 中运行,但就功能和性能而言,它们绝对是“二流”的。

专注于在 WSL2 中运行 Ubuntu/Linux 应用程序:

  • 该应用程序基于终端/控制台(例如,Vim、Node.js和相关构建工具等)

  • 或者 Windows 中没有好的 GUI 替代方案

  • Linux 版本得到了更好的支持,具有您需要而 Windows 中没有的功能等。

为了那些应用程序,在 WSL2 下的 Ubuntu 中安装 Linux 版本及其数据。


附注:如上所述,您可以在 WSL2 下的 Ubuntu 中从命令行运行任何应用程序的 Windows 版本。但是,如果它不在您的 Windows 路径中,则需要使用 Linux 目录结构提供完整路径。您还需要提供扩展名(.exe)。

例如,运行记事本:

/mnt/c/WINDOWS/System32/notepad.exe

或者(假设 Google 搜索结果正确):

/mnt/c/Program\ Files\Epic\ Games\UE_5.1\Engine\Binaries\Win64\UnrealEditor.exe

答案2

如果“移动”仅仅意味着移动当前文件;
那么您将面临纯粹的失败 - 除非您拥有以完全相同的方式解释文件的软件(例如编译器)。

提取源代码并进行编译,然后运行就可以了 - 假设源代码是​​以允许为 Linux 编译的样式编写的。

获取知识的途径:
Windows cmd.exe 比较古老且特殊,Linux 的命令“Shell”可能被视为与其相对应,有多个变体,但通常与 Ubuntu 一起安装的是“Bash”。
www.tldp.org有几个“Bash 指南”,对于初学者来说可以很好地浏览,它们有点旧但仍然非常有效。

shell 可以看作是 Linux 的基础,具有多种自动化和调整的可能性。GUI 软件(窗口管理器)具有所有常规选项,但很少允许相同程度的控制。那里也有几个可选版本。不过我不知道在 WSL 中是否有这种可能性。

需要指出的一点是:
文本文件或源代码完全可以在两者之间进行传输,但要记住一点:Windows 使用 CR+LF 作为行尾,而 Linux 仅使用 LF。 unix2dosdos2unix是用于转换的 shell 命令。

$ sudo apt install dos2unix# 安装这两者。

相关内容