在 WSL 中安全地编辑 .bashrc

在 WSL 中安全地编辑 .bashrc

如何.bashrc安全地编辑 Windows Subsystem for Linux 中的文件?

本文警告切勿AppData使用 Windows 工具编辑存储在 WSL 文件夹中的文件。

但是,如何.bashrc以安全的方式编辑文件呢?

答案1

使用内置nano编辑器作为:

nano ~/.bashrc

最重要的快捷键nanoCtrl+ O(保存文件)和Ctrl+ X(关闭编辑器)。

nano您可以在以下位置找到简单的使用指南Gentoo Linux 维基

答案2

我认为Visual Studio 代码运行良好。只需安装远程 - WSL扩大。

要使用它,只需打开 cmd 并输入bashbash输入cd,然后使用code .bashrc

瞧!VS Code 在 WSL 中打开,您可以编辑所需的文件。

答案3

很抱歉在这里添加另一个答案,但问题本身(以及这里的所有其他答案)需要语境这对于其他试图理解它的人来说是缺失的。

原始问题中链接的 Microsoft 警告指的是编辑 WSL1 文件通过 Windows使用 Windows 的%AppData%路径。在 WSL 版本 1(但不是版本 2)中,WSL 将 Linux 实例的整个文件系统存储在 Windows 文件夹中。这些文件虽然在 Windows 中对用户可见,但不应在 Windows 中编辑。正如警告所述,如果不加以注意,WSL 实例很可能会损坏。

这在 WSL 版本 2 上不是问题。由于文件系统存储在虚拟磁盘中,因此无论如何都无法直接编辑文件系统。

然而,无论在哪个版本中,可以安全地编辑文件(包括~/.bashrc里面WSL 实例。在那里,它只是 WSL 文件系统中的一个普通文件。2019 年的两个答案(BeastOfCaerbannog 的WinEunuuchs2Unix 的) 使用这种方法。这没什么不对——它们都是正确答案。虽然我想说安装 Windows X Server 并gedit仅仅为了编辑 WSL 文件可能有点小题大做。几乎任何其他编辑器都可以被引用(有人想为了完整性而加上 Emacs 答案吗?;-))。

2020 年 Brixton Mavu 的回答提到使用 VSCode,也是对同一想法的演绎。尽管它使用 Windows 工具,但 VSCode 会在 WSL 实例内部启动一个服务器,并与该服务器通信,以允许编辑、浏览甚至调试 WSL 实例。

然后是@Jon 最近的回答(这引发了这个问题,这也是我看到它的原因)。这(基本上)是关于如何从 Windows 内部而不是从 WSL 实例内部安全地编辑 WSL 文件的正确答案。不过,实际上在原始问题中链接的 Microsoft 博客条目中已经提到了这一点。

我说“大多数”,是因为一般来说,你应该避免使用 Windows 工具来编辑 Linux 文件,因为许多 Windows 编辑器默认使用 DOS/Windows 行尾,这也会导致~/.bashrc失败。有些工具足够智能,可以识别现有文件是 Linux 文件,有些工具则不能,但大多数工具在没有其他格式的情况下会默认使用 CRLF(DOS/Windows)。

如果由于中的错误而导致 WSL 实例无法启动~/.bashrc,则可以使用@Jon 的建议来\\wsl$\编辑它,但也有(IMHO)其他更安全的替代方案。

要编辑~/.bashrc该文件阻止您启动的情况,请运行:

wsl -e bash --norc -c "vi ~/.bashrc"

或者

wsl ~ -e bash --norc
vi .bashrc

这将bash在无需获取现有资源的情况下启动~/.bashrc

其他替代方法包括以 root 身份启动会话:

wsl -u root

然后进行任何必要的编辑。

总体而言,WSL 通过使用wsl命令的参数来启动实例,具有一些令人惊叹的恢复机制。

答案4

如果您更喜欢 GUI 编辑器,请VcXsrv按照此处详细说明进行安装:

然后使用gedit ~/.bashrc

相关内容