【问题标题】:VSCode - what exactly --user-data-dir is specifiyingVSCode - --user-data-dir 究竟是什么
【发布时间】:2022-01-20 13:39:26
【问题描述】:

--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.

那里是否存储了一些临时文件?

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

我问是因为我想用sudo(我想编辑系统配置文件)运行 VSCode(或者更准确地说是 Codium),由于我不清楚的原因需要这个参数。

【问题讨论】:

  • 我认为对于“凡人”用户,它默认为:~/.vscode,作为“root”,您必须相应地指定它...see also
  • VSC 会为它打开的每个工作区/文件夹保存一些东西,它还需要一个地方来存储您已安装的扩展(可能是不同的目录参数)

标签: visual-studio-code parameters


【解决方案1】:

由于sudo-ing VS Code 在命令行启动时仅适用于 Linux,此问题假设您使用的是 Linux,并且将其上下文限制为 Linux。

TL;DR

直接回答您的问题:user-data-dir 参数指向除扩展程序之外的所有个性化设置所在的文件夹 - 每个用户都是唯一的。

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

在操作系统和 VS Code 的典型安装中,普通用户拥有的这个文件夹不能被超级用户访问。

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


详细说明

VS Code 使用两个主要文件夹来存储配置数据:

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

在 Linux 上,后者位于 ~/.config/Code,并具有文件权限模式 0700(所有者以外的任何人都无法读取和写入)。

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

后一种策略是整个社区决定采用的; this commit from 2016 开始强制在 sudo-ing Linux 上的 VS 代码时传递显式 --user-data-dir


您应该首先这样做吗?

可能不会!如果您的目标是修改系统配置文件,那么您可以坚持使用未提升的代码实例,这会提示您另存为管理员... 当您尝试保存时。请参阅this answer on Ask Ubuntu,了解为什么您可能希望避免无缘无故地提升 VS Code(除非您了解风险和/或必须这样做),以及 this one 相同讨论你可以做什么。
但是,如果相关文件也被 读取限制为 root 就像 O.P 的情况一样,那么您几乎别无选择?; sudo离开! ?

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

希望对您有所帮助!

【讨论】:

  • “另存为管理员”不能解决无法打开此类文件的问题。尽管“绝对最好的做法是复制受限文件,对其进行编辑,然后在您确定完成后将其复制回来。”可能是一个更好的解决方案。
  • 啊啊啊,所以这里涉及的系统配置文件也有读限制?现在我明白你为什么要经历这一切 xD :/
  • 也更改了我的答案以反映读取限制为根文件的可能性:)
猜你喜欢
  • 2014-10-28
  • 2012-08-27
  • 2010-11-12
  • 2011-03-18
  • 2011-01-22
  • 1970-01-01
相关资源
最近更新 更多