Mac 终端 `code .` 失灵?两步排雷,附 App Translocation 原理
code . 失灵,要么 VS Code 没注册到 PATH,要么被 macOS 的 App Translocation 坑了——你从 ZIP 解压后直接双击,系统会把它虚拟挂载到一个临时只读路径,软链接指过去,一重启就消失。
第一步:正确安装并注册 code 命令
1. 确保 VS Code 在 /Applications 里。最佳做法:从官网下载 DMG 安装(非 ZIP),打开后拖到 Applications。如果非要用 ZIP,解压后必须用 Finder 把 .app 拖进 Applications——不要双击运行,否则触发 Translocation。
2. 打开 VS Code,按 Cmd+Shift+P,输入 Shell Command: Install 'code' command in PATH 并回车。这会创建 /usr/local/bin/code 软链接。
3. 新开终端,输入 code --version。如果看到版本号,搞定。
第二步:如果第一步后重启失效——清除 Translocation
如果重启后 code . 又失效,多半是软链接被 Translocation 污染。运行 which code,如果返回类似 /private/var/folders/.../code,证实被隔离。
- 方法 A(免重装):终端执行 xattr -d com.apple.quarantine /Applications/Visual\ Studio\ Code.app,然后重新运行第一步的安装命令。
- 方法 B(暴力触发):把 VS Code 从 Applications 移出(比如桌面),再拖回去。Finder 会自动解除 quarantine,然后重复第一步。
第三步:手动添加 PATH(终极兜底)
如果以上都不行,直接编辑 shell 配置文件:
- 确定 shell:echo $SHELL(zsh 或 bash)。
- 编辑 ~/.zshrc 或 ~/.bash_profile,末尾添加 export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"。
- 保存,执行 source ~/.zshrc 或重启终端。
小建议
别踩 Translocation 的雷:永远别从 ZIP 解压后直接双击 VS Code。下载后通过 Finder 拖进 Applications 再打开。如果经常写脚本,建议装个 xattr 快速清除 quarantine 的小脚本。
为什么这样:macOS 从 Mojave 开始对未通过 Quartz 安全策略的应用实施 Translocation,VS Code 写入的软链接被指向临时只读区,重启即废。理解原理,以后遇到类似 App 就能举一反三。
注意:本方法适用于 macOS Ventura / Sonoma 及当前 VS Code 1.9x。版本更新后 code 命令可能失效,重复第一步即可。如果遇到 Permission denied,用 sudo 执行 xattr 命令。