M2 Mac不同终端uname返回架构不同,如何让VS Code显示真实架构?
问题原因与解决方法
原因
你的VS Code是x86_64版本,通过Rosetta转译在M2芯片上运行,它启动的终端shell会继承Rosetta的转译环境。此时调用系统命令(如uname)会经过转译层,返回模拟的x86_64架构;而iTerm是原生arm64版本,直接运行在真实架构上,所以返回正确的arm64。
解决方法
方法1:安装VS Code原生arm64版本
- 前往VS Code官网,下载标注为「Apple Silicon」的安装包
- 替换当前的x86_64版本VS Code,重启后终端的
uname -m会直接返回arm64,所有CLI命令都将以原生架构运行。
方法2:强制终端以原生架构启动(不更换VS Code版本)
如果不想重新安装VS Code,可通过配置让集成终端强制用arm64架构启动shell:
- 打开VS Code设置(快捷键
Cmd+,),搜索「Terminal > Integrated > Profiles: OSX」,点击「编辑 in settings.json」 - 在配置中修改或添加bash的启动参数,示例如下:
"terminal.integrated.profiles.osx": { "bash": { "path": "/bin/bash", "args": ["-il", "-c", "arch -arm64 /bin/bash"] } }, "terminal.integrated.defaultProfile.osx": "bash"
- 重启VS Code的集成终端,执行
uname -m即可看到返回arm64。
若你使用zsh等其他shell,只需将上述配置中的
/bin/bash替换为对应shell的路径(如/bin/zsh)即可。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

