visual-studio-code - 为什么uname在不同的终端返回不同的当前硬件平台?

标签 visual-studio-code uname

我使用的是 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/

相关文章:

visual-studio-code - VScode 终端中不需要的输出

c++ - 为什么此代码只能在一个平台上运行而不能在另一个平台上运行?

python - VS Code 中未安装 HuggingFace 变形金刚

linux - 在 Linux 上解释 uname -a 命令?如何找到操作系统的供应商名称?

pid - 如何在unix中查找特定进程ID的端口号?

angularjs - 如何在 visual studio 代码中发布到 IIS 服务器

typescript - 具有抽象语法的 Visual Studio 代码

php - 准确确定运行 PHP 的操作系统类型

php - YOUR uname 说什么?

string - 从 Bash 脚本检测操作系统并通知用户