要在 macOS 上检查文件,首先查看 VS Code 的远程指示器,然后确认文件的路径以及该路径所在的位置。Dev Container 窗口连接到了容器,但其工作区文件可能挂载自你的 Mac;其他容器配置则仅将文件存储在容器中。窗口指示器能告诉你连接上下文,而工作区配置和文件系统检查则有助于确定文件的存储位置。VS Code 的 Dev Containers 教程描述了远程上下文以及从本地文件系统映射的示例项目。

检查窗口的远程指示器

查看 VS Code 窗口的左下角。在 Dev Container 连接中,VS Code 会显示一个远程状态栏项。点击它可以打开与该远程上下文相关的命令。该指示器是一个很有用的初步检查:它能指明该窗口是否连接到了远程环境,但它本身并不能说明工作区文件是由 Mac 文件夹还是容器卷(volume)支持的。VS Code 的教程指出,该项用于显示当前上下文是本地还是远程。Dev Containers 教程

如果你没有看到远程指示器,这并不能确凿证明特定编辑器标签页指的就是 Mac 文件。你看到的可能是一个无标题文档、在工作区之外打开的单个文件,或者是通过其他远程功能连接的窗口。在做出判断前,请检查活动文件及其工作区上下文。

确认活动文件属于哪个文件夹

在资源管理器中,找到该文件并注意其上方的工作区文件夹。右键点击该文件,并在可用时选择 Reveal in Finder(在 Finder 中显示)。VS Code 记载了这项用于在 Finder 中定位文件或文件夹的 macOS 操作。如果 Finder 在 Mac 的目录树中显示了该文件,则证实了本地路径。如果文件位于远程窗口中,且“Reveal in Finder”不可用或未识别出 Mac 副本,请不要直接假定文件是本地文件;请继续进行终端和容器配置检查。VS Code 用户界面文档

你还可以使用 ⇧⌘P 打开命令面板,并搜索 Copy Path of Active File(复制活动文件的路径)。复制的路径有助于你识别 VS Code 与该文件关联的路径。类似于 /workspace/app.js 的路径是典型的 Linux 容器工作区路径,而以 /Users/ 开头的路径则是典型的 Mac 主目录路径——但路径只是线索,不是证据。容器可以将 Mac 文件夹挂载到 /workspace,因此仅凭容器内路径无法说明数据存储在何处。该命令和快捷键记载于默认键盘快捷键参考。

使用集成终端识别其环境

在同一窗口中打开 Terminal > New Terminal(终端 > 新建终端)并运行以下只读命令:

pwd
uname -s

终端默认从工作区文件夹启动。在 macOS 上,uname -s 通常输出 Darwin;在基于 Linux 的开发容器中,它通常输出 Linux。如果终端显示 Linux,而远程指示器显示 Dev Container 上下文,则说明 shell 正运行在容器环境中。VS Code 指出,其集成终端使用当前上下文的 shell,并从工作区根目录启动。终端基础知识

这些命令可以识别终端的环境和当前目录;它们不能证明工作区文件夹是来自 Mac 的绑定挂载(bind mount),还是存储在容器卷中的数据。要区分这一点,请检查项目的 .devcontainer/devcontainer.json 或 Compose 配置中的设置,例如 workspaceMount、workspaceFolder 或卷挂载(volume mounts)。VS Code 的远程 Docker 主机指南记载了将绑定挂载和命名卷作为提供工作区文件的不同方式。在远程 Docker 主机上开发

在编辑前综合判断结果

将所有证据结合起来使用。本地 VS Code 窗口、Finder 中的 Mac 路径以及输出 Darwin 的集成终端均指向本地编辑。Dev Container 指示器和 Linux 终端则表明 VS Code 正运行在容器上下文中。要判断编辑内容是存储在 Mac 上还是容器中,还需要确定工作区的挂载方式:绑定挂载可以将 Mac 文件暴露在容器内部,而命名卷则可以将文件保存在 Docker 管理的存储中。

如果在进行更改之前这种区别至关重要,请检查挂载配置,或向项目搭建人员询问工作区使用的是哪种存储。不要从容器路径推断 Mac 上一定有备份,也不要仅仅因为终端是 Linux 就推断数据仅存储在容器中。这些检查告诉你的是活动 VS Code 窗口及其工作区的情况;它们并不能确定别处是否存在另一份副本。

来源