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 用于存储配置数据的主要文件夹有两个:
- 一个 extensions 文件夹(不言自明)— 包含在
~/.vscode
[1] 中
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]
希望对您有所帮助!
--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 用于存储配置数据的主要文件夹有两个:
- 一个 extensions 文件夹(不言自明)— 包含在
~/.vscode
[1] 中
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]
希望对您有所帮助!