if you s/exec/arch -arm64/g
the bash helper script, that will start the new instance as an arm binary without Rosetta. This isn't portable, so you'd need to invoke arch
first (without any params), which will give you the native system architecture.
Reference on that command - https://stackoverflow.com/questions/71065636/how-can-i-run-a-command-or-script-in-rosetta-from-terminal-on-m1-mac
exec
is a bash built-in, and seems to spawn the new Orion process directly. In contrast, arch spawns a new thread as a child of the shell (i.e. bash), which is perhaps a little bit messy.
I am not sure why exec
is invoking the app as an Intel binary though! I suspect the answer lies somewhere to do with this:
"In other words, when running code on Apple Silicon, macOS will keep to the same architecture through each calling chain. As some have already reported on Twitter, if you run a terminal app which is Intel-only, each shell that it launches also runs under Rosetta 2 and runs the Intel version of each tool which it calls, even though those tools may be Universal and have ARM-native code available too. When those tools haven’t already been translated by Rosetta 2, translation must occur before they can be run, causing a delay, even though they could have run their ARM-native code."