VSCode - --user-data-dir 究竟指定了什么

VSCode - what exactly --user-data-dir is specifiying

--user-data-dir具体指的是什么?

来自--help参数:

--user-data-dir <dir> Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code.

它是否在其中存储了一些临时文件?

是关于配置文件的访问路径吗?

我想 运行 VSCode(或更准确地说是 Codium)与 sudo(我想编辑系统配置文件)需要此参数我不清楚的原因。

因为 sudo-ing VS 代码 在命令行启动 只有 Linux , 此问题假定您在 Linux 上,并将其上下文限制为 Linux.

TL;DR

直接回答您的问题: user-data-dir 参数指向一个文件夹,除扩展 之外的所有个性化设置都位于该文件夹中 — 唯一每个用户。

为什么 sudo-ing 代码需要 --user-data-dir?

在 OS 和 VS Code 的典型安装中,普通用户拥有的文件夹 超级用户无法访问。

因此 VS Code 会话 运行 有效 UID=0 尝试写入调用用户(而非超级用户)的配置文件夹,但未能成功。这是错误消息通过强制用户提供明确的 root 可访问文件夹来防止发生的情况。


详细说明

VS Code 用于存储配置数据的主要文件夹有两个:

  1. 一个 extensions 文件夹(不言自明)— 包含在 ~/.vscode[1]
  2. user-data-dir所有其他可个性化的东西(设置、键绑定、GitHub/MS 帐户凭据缓存、主题、tasks.json你说了算)[2]

在 Linux 上,后者位于 ~/.config/Code,并且具有文件权限模式 0700(除了所有者)。

这会导致问题,因为 VS Code 尝试访问所述目录但失败了。合乎逻辑的解决方案是修改 ~/.config/Code 的权限(递归)以允许 root 访问,或者 — 可以说更理智和客观上更尊重隐私 — 完全使用 单独的目录 用于访问 sudo 的 VS 代码。

后一种策略是整个社区决定采用的策略; this commit from 2016 在 Linux.

sudo-ing VS Code 时开始强制传递显式 --user-data-dir

你应该首先这样做吗?

可能不会! 如果您的目标是修改系统配置文件,那么您可以坚持使用未提升的代码实例,这会提示您 另存为管理员... 当您尝试保存时。请参阅同一线程上的 this answer on Ask Ubuntu on why you probably want to avoid elevating VS Code without reason (unless you understand the risks and/or have to), and this one,了解您可以做什么。
但是,如果相关文件也 读取限制为 root 就像 O.P 的情况一样,那么您几乎没有选择; sudo 走了!

[1] & [2]:如果您想了解更多关于上述两个文件夹路径在不同的OSes,请参阅[1] and [2]

希望对您有所帮助!