1 votes

Variable d'environnement MACHTYPE sur ARM

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?

5voto

nohillside Points 82672

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.").

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X