macos - M1/Intel 的 Brew 变量

标签 macos homebrew intel apple-m1

我正在编写一个脚本,将其放入我的 Mac 部署 MDM 中,该部署将安装一些开发插件。看起来 Homebrew 程序路径的变化取决于机器是基于 M1 还是基于 Intel。我已经开始编写一个 if/then 脚本来根据上述内容更改 brew 路径,但我遇到了问题。非常感谢任何帮助。

#!/bin/bash

PROCESSOR=$(/usr/sbin/sysctl -n machdep.cpu.brand_string)
M1PATH=/opt/homebrew/bin/brew
INTELPATH=/usr/local/bin/brew

if [ "$PROCESSOR" == "Apple M1" ]
then
  brew=$M1PATH
else
  brew=$INTELPATH
fi

brew install cocoapods
brew install maven
brew eclipse-jee
brew elm
brew node
brew install python3
npm install -g react-native-cli
npm install --global gulp-cli
brew install vim
brew install watchman
brew install yarn
yarn global add jest
npm install -g appcenter-cli
brew install ios-deploy

最佳答案

我想OP现在已经成功实现了他们的目标,但是对于那些需要解决方案的人来说,您只需使用“检测到的” Homebrew 程序路径更新PATH变量即可:

case `arch` in
    arm64) # M1
        export BREW_PREFIX=/opt/homebrew

    ;;
    i386) # Intel
        export BREW_PREFIX=/usr/local
    ;;
esac

export PATH="$BREW_PREFIX/bin:$PATH"

如果像我一样,您的脚本带有 #!/usr/bin/env bash 序言,您可以通过添加符号链接(symbolic link)来获得额外的里程:

ln -snf $BREW_PREFIX/bin/{,brew_}bash

然后更改您的脚本以使用 #!/usr/bin/envbrew_bash

附录2022/12/29

new/temp 环境变量的要点是我们处于引导阶段,即当系统尚不知道 brew 或其任何设置时。

在我的个人设置中,我收集了大量方便的变量、函数、别名和补全,因此我将它们分别组织到专用文件中;因此,您在这里看不到任何 brew Hook 的评估/采购,甚至可能不会在独立脚本中打扰。

关于macos - M1/Intel 的 Brew 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68504510/

相关文章:

mysql - 使用 Intel Appframework 访问 MySql 数据库

macos - 如何从命令行创建 Macintosh Finder 别名?

c - 如何在 Mac OS X 中获得与 Linux gcc/gnu crypt(3) 相同的 crypt(3) 函数? Linux gcc crypt(3) 有 MD5 和 SHA512。 Apple Gcc crypt(3) *仅* 使用 DES

ruby - 需要 C 扩展的 rbenv 和 gem

linux - 在 Homebrew 软件中,我怎么知道 xargs 属于 findutil 包?

c - 使用 MKL 的稀疏矩阵乘法

objective-c - 核心数据获取请求不返回不同的结果

java - 在 Mac 和 Windows 上部署 LWJGL 应用程序

python - 如何使用 brew 安装的 Python 作为默认 Python?

c++ - 通过引用传递太多参数可能效率低下?