如何通过shell / bash检测386,amd64,arm或arm64 OS体系结构

Jus*_*tin 1 bash shell posix arm x86-64

我在寻找一个POSIX外壳/ bash命令来确定OS架构386amd64arm,或arm64

eph*_*ent 26

uname -m
Run Code Online (Sandbox Code Playgroud)

打印值,例如x86_64i686arm,或aarch64

  • @Justin 64 位是在 ARM v8 中引入的,所以 `armv7l` 表示 32 位小端 ARM。话虽如此,如果您使用的是 RPi3:处理器实际上是 64 位,但如果您的操作系统处于 32 位模式,它会报告旧型号。 (2认同)
  • aarch64与arm64相同(64位ARM)armv71是32位ARM (2认同)

Rom*_*get 14

我建议使用:

dpkg --print-architecture
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个,这样更清晰。 (4认同)

Zst*_*ack 8

$ lscpu | grep Architecture

Architecture:                    x86_64
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想获取值:

 $ lscpu | awk '/Architecture:/{print $2}'

x86_64
Run Code Online (Sandbox Code Playgroud)


Ili*_*nko 6

$ arch
Run Code Online (Sandbox Code Playgroud)

也有效。在基于 Debian 和基于 RPM 的发行版上进行了测试。

  • 通过“arch”,您可以获得当前终端的架构。真实的操作系统架构可能有所不同 (4认同)

Jus*_*tin 5

我进行以下操作:

architecture=""
case $(uname -m) in
    i386)   architecture="386" ;;
    i686)   architecture="386" ;;
    x86_64) architecture="amd64" ;;
    arm)    dpkg --print-architecture | grep -q "arm64" && architecture="arm64" || architecture="arm" ;;
esac
Run Code Online (Sandbox Code Playgroud)

  • 当您这样做时,您也可以将案例逻辑中的前两个分支折叠为“i386 |”。i686) Architecture="386" ;;` 在末尾包含一个包罗万象的分支总是好的,以达到 `*) echo "无法确定系统架构。" 的效果。出口 1 ;;` (2认同)