如何.bashrc
安全地编辑 Windows Subsystem for Linux 中的文件?
本文警告切勿AppData
使用 Windows 工具编辑存储在 WSL 文件夹中的文件。
但是,如何.bashrc
以安全的方式编辑文件呢?
答案1
使用内置nano
编辑器作为:
nano ~/.bashrc
最重要的快捷键nano
是Ctrl+ O(保存文件)和Ctrl+ X(关闭编辑器)。
nano
您可以在以下位置找到简单的使用指南Gentoo Linux 维基。
答案2
我认为Visual Studio 代码运行良好。只需安装远程 - WSL扩大。
要使用它,只需打开 cmd 并输入bash
。bash
输入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