vscode --install-extension 报 eacces 是因操作系统拒绝向扩展目录写入,需检查 ~/.vscode/extensions 权限并修复所有权或使用 --extensions-dir 指定可写路径,禁用 sudo 避免装入 root 目录。

vscode --install-extension 报 EACCES 或 Permission denied
这不是插件坏了,是操作系统拒绝 VSCode 向 ~/.vscode/extensions(Linux/macOS)或 %USERPROFILE%\.vscode\extensions(Windows)写入文件。VSCode 安装 .vsix 本质是解压 + 写目录 + 更新 JSON,任一环节权限不足都会静默失败。
常见触发点:
-
~/.vscode所在父目录权限被收紧(比如误执行chmod -R 700 ~) - WSL 挂载的 Windows 分区、企业 NTFS 卷、macOS SIP 保护目录下无法写入
- 扩展目录被手动设为只读(右键属性 → 勾选了“只读”)
- 当前用户不是该目录的所有者(尤其多用户共享机器时)
检查并修复 ~/.vscode/extensions 目录权限
先确认问题是否出在这里:在终端运行 ls -la ~/.vscode/extensions/。若报 Permission denied,说明连读都失败,更别说写入。
修复步骤:
- Linux/macOS:运行
sudo chown -R $(whoami) ~/.vscode,确保当前用户拥有完整控制权 - Windows:打开资源管理器 → 右键
%USERPROFILE%\.vscode→ “属性” → “安全” → 选中你的用户名 → 点“编辑” → 勾选“完全控制” → “确定” - 若目录不存在,先手动创建:
mkdir -p ~/.vscode/extensions,再赋权 - 避免把
extensions目录硬链到/usr/local或C:\Program Files—— 这些路径天生受限,不是靠提权能长期解决的
用 --extensions-dir 绕过默认路径限制
当无法修改默认目录权限(如云桌面、受控终端),最稳妥的做法是绕开它,指定一个你肯定有写权限的位置。
例如:
- Linux/macOS:
/usr/bin/code --extensions-dir ~/vscode-exts --install-extension /path/to/plugin.vsix - Windows:
code --extensions-dir "%USERPROFILE%\vscode-exts" --install-extension "C:/downloads/plugin.vsix" - 注意:路径必须是绝对路径,不能含空格或中文;
--extensions-dir必须放在--install-extension之前 - 这个参数只对本次命令生效,不影响全局设置,适合脚本批量安装或临时调试
为什么不要用 sudo code --install-extension
加 sudo 看似能绕过权限,但实际会把插件装进 /root/.vscode/extensions,而你日常启动的 VSCode 是普通用户进程,根本看不到 root 用户下的插件。
结果就是:
- 命令看似成功,但插件列表里没有
- VSCode 启动后日志里可能报
exthost process exited with code 1 - 后续所有离线安装都会重复踩坑
- 清理麻烦:得进
/root/.vscode/extensions手动删,还可能残留配置
真正难处理的从来不是“装不上”,而是“以为装上了”。目录写入失败几乎不报明确错误,只让进度条卡住或一闪而过——盯住 ~/.vscode/extensions 目录是否存在新文件夹,比看 UI 提示可靠得多。











