我使用的是 M2 Macbook Air,运行 Apple 基于 ARM 的芯片。我希望与为不同平台构建应用程序相关的 CLI 命令能够正确且可预测地工作,无论我是从独立终端(如 iTerm)还是从 IDE 中的集成终端运行这些命令。
奇怪的是,uname
根据我调用它的位置报告不同的 CPU 架构。
使用 iTerm2:
$ uname -m
arm64
在 Visual Studio Code 中使用集成终端:
$ uname -m
x86_64
看起来 iTerm 是正确的,而 VSC 是错误的。
两个终端都使用相同的uname
程序:
$ which uname
/usr/bin/uname
两者都运行相同的 shell:
$ ps -p $$
# iTerm
PID TTY TIME CMD
73664 ttys001 0:00.05 /bin/bash -il
# VSC
PID TTY TIME CMD
73775 ttys002 0:00.14 /bin/bash --init-file /Users/Tom/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh
两者都列出了/bin/bash
。是的,VSC 运行那个 shellIntegration-bash.sh
脚本,但我仔细研究了它,没有发现任何看起来会改变 uname
报告 CPU 的方式架构。
两者都在加载我的 bash 配置文件,这可以证明我的自定义 PS1
在两个地方都是相同的,而且我在任何其他文件中都没有其他 TTY 配置。
我后来查了一下,VS Code 使用的是 Rosetta,而 iTerm 不是。
这是怎么回事?如何让 uname -m
在 VS Code 中说出真相?
最佳答案
来自Running uname -m Gives x86_64 On M1 Mac Mini在 apple.stackexchange.com 上,当从使用 Rosetta 运行的进程运行 uname -m
时,您将得到“x86_64”。正如您后来所确认的,您的 VS Code 正在使用 Rosetta 运行,而您的 iTerm2 则不是。试试downloading VS Code 的 ARM (Apple Silicon) 版本。
出于引用/学习目的,当我在 Google 上搜索“apple Silicon "uname -m"
”时,“询问不同的问答”是我的第一个搜索结果。
关于visual-studio-code - 为什么uname在不同的终端返回不同的当前硬件平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76024834/