Je suis sur un M3 Pro, MacOS 14.2. Lorsque j'essaie echo $MACHTYPE
(dans un shell par défaut -zsh
), la sortie est x86_64
, alors que uname -mp
retourne arm64 arm
. Les docs Zsh indiquent que MACHTYPE
devrait être "le type de machine (classe de microprocesseur ou modèle de machine), tel que déterminé lors de la compilation." Pourquoi mon type de machine à l'heure de la compilation est-il défini sur x86_64
? Je n'utilise pas Terminal avec Rosetta. Peut-être une question plus robuste, quel est l'usage prévu du paramètre de shell MACHTYPE
sur MacOS basé sur ARM?
Réponse
Trop de publicités?J'ai mis en évidence la partie importante dans le texte que vous avez pris de la documentation ZSH :
le type de machine (classe de microprocesseur ou modèle de machine), tel que déterminé au moment de la compilation.
Cela signifie qu'Apple a compilé zsh
sur une machine Intel, à la fois pour x64 et arm64. Cela signifie également que l'utilisation pratique de MACHTYPE
est plutôt limitée et (si vous avez besoin de connaître l'architecture au moment de l'exécution) uname -m
est l'option la plus précise.
PS : Dans bash
, MACHTYPE
est défini comme "décrit le type de système sur lequel bash s'exécute". Cela explique pourquoi dans /bin/bash
, j'obtiens arm64-apple-darwin23
, dans Homebrew bash
c'est aarch64-apple-darwin23.0.0
, et dans Homebrew zsh
c'est arm
. Cela signifie également que vous devez vérifier le shell utilisé lorsque vous suivez des exemples trouvés en ligne. Si vous avez besoin de l'équivalent de MACHTYPE
de bash
dans zsh
, utilisez CPUTYPE
("Le type de machine (classe de microprocesseur ou modèle de machine), tel que déterminé au moment de l'exécution.").