Hay algunos malentendidos sobre lo que es cada uno de los elementos...
-
Terminal - El terminal no es más que la utilidad que permite ejecutar comandos. Piensa en ella como una "ventana" al sistema. Puedes abrir un Terminal en un Mac PowerPC, y luego establecer una conexión con un nuevo Mac M1 que a su vez se conecta al escritorio X11 que se ejecuta en Linux en una CPU Intel. En otras palabras, el Terminal no determina el entorno en el que finalmente trabajas. Si estás en el nuevo Mac M1, el Terminal será el Terminal nativo compilado M1.
-
El shell es el entorno en el que operas; es la interfaz de usuario real. Probablemente estés familiarizado con Bash y Zsh (shell por defecto desde Catalina). Este también operará como el entorno nativo compilado, así que si estás en la M1 usará el shell compilado para esa plataforma. El shell es sólo la forma de enviar comandos al sistema operativo para hacer cosas, incluyendo la ejecución de binarios.
-
La ejecución de binarios depende de para qué se haya compilado ese binario. Sabemos que un binario de Linux (incluso compilado en x86) no se ejecutará en MacOS. El binario tiene que ser compatible o necesita algo que te da esa compatibilidad. Por ejemplo, FreeBSD tiene una capa de compatibilidad con Linux . Aquí es donde entra Rosetta; para hacer que las instrucciones de Intel sean compatibles con ARM de Apple.
Rosetta es la herramienta o "capa" que permite ejecutar instrucciones x86_64 en el chip ARM. Así, si quieres ejecutar un widget que sólo está disponible en x86_64, lo ejecutarías en Rosetta.
Así que, usando tu ejemplo, ejecutarías el binario universal de iTerm2 (nativo de ARM) para usar el shell Zsh binario universal que fue compilado en ARM para lanzar la herramienta binaria universal compilada nativamente en ARM o la herramienta x86_64 compilada bajo Intel vía Rosetta.
De los comentarios:
Me pregunto por qué el equipo de Homebrew sugiere abrir la terminal bajo Rosetta.
Haciendo una investigación relacionada con MacPorts, hay muchos, muchos puertos que aún no soportan la compilación bajo ARM; Bash es uno de ellos y he incluido la página de salud del puerto como referencia. Ver abajo:
Le dirán que abra Terminal (o iTerm2) bajo Rosetta para asegurar estás inicializando un entorno x86_x64 .
Si un binario incluye instrucciones tanto para arm64 como para x86_64, el usuario puede indicar al sistema que inicie la aplicación utilizando la traducción de Rosetta desde la ventana Get Info de la aplicación en el Finder. Por ejemplo, un usuario puede activar la traducción de Rosetta para permitir que la aplicación ejecute plug-ins más antiguos que aún no son compatibles con la arquitectura arm64.
Así, Terminal (o iTerm2) será universal (se ejecuta de forma nativa bajo ARM) pero el entorno podrá soportar el conjunto de instrucciones x86_64.