环境配置

拿到新 Mac 后
半小时配好开发环境

不管是自己新买的 Mac,还是刚租到的远程 Mac,开发环境的配置步骤都差不多:命令行工具、Homebrew、用 Brewfile 批量装软件、用 mise 管理语言版本、同步 dotfiles、配置 Git 与 SSH Key,最后检查安全设置。把这些写成脚本,下次换机器时几分钟就能复原。

三万主机 · 更新于

01 / BASICS

Xcode 命令行工具与 Homebrew

命令行工具提供 git、clang、make 等基础工具,Homebrew 的安装脚本也会检查并提示安装它:

xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Apple 芯片 Mac 上 Homebrew 安装在 /opt/homebrew,需要加入 PATH
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
brew doctor

写在 ~/.zprofile 而不是 ~/.zshrc,这样 SSH 登录和 VS Code 远程终端也能找到 brew。

02 / BREWFILE

用 Brewfile 批量安装

Brewfile 是一份可提交到 Git 的软件清单。在旧机器上导出,在新机器上一条命令装回:

brew bundle dump --file=~/dotfiles/Brewfile   # 旧机器导出
brew bundle --file=~/dotfiles/Brewfile        # 新机器安装
# Brewfile 示例
brew "git"
brew "gh"
brew "mise"
brew "tmux"
brew "ripgrep"
brew "jq"
cask "visual-studio-code"
cask "iterm2"

远程服务器上可以去掉图形应用(cask),只保留命令行工具。清单建议按用途分组并写注释,过一段时间回头看,能分清哪些是项目必需、哪些只是试用过的工具。定期执行 brew bundle cleanup 可以列出装了但不在清单里的软件,确认后加 --force 删除,保持机器和清单一致。

升级习惯也要定下来:brew update 和 brew upgrade 放在每周固定时间手动执行,而不是在赶工时顺手升级,避免某个工具的大版本变化打断手上的工作。

03 / MISE

用 mise 管理语言版本

不要依赖系统自带或 Homebrew 全局安装的 Node.js、Python,项目之间版本一冲突就很麻烦。mise(或 asdf)按目录切换版本:

echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
exec zsh

mise use -g node@lts python@3.12   # 全局默认版本
cd ~/code/my-app
mise use node@20                   # 写入项目目录的 mise.toml
mise install                       # 按版本文件安装缺失的版本

把 mise.toml 或 .tool-versions 提交到仓库,团队成员和 CI 都使用同一版本。

04 / DOTFILES

dotfiles:把配置放进 Git

把 .zshrc、.zprofile、.gitconfig、Brewfile 等放进一个私有仓库,用软链接接回家目录。最简单的做法是自己写一个安装脚本,也可以用 GNU Stow、chezmoi 这类工具:

git clone git@github.com:you/dotfiles.git ~/dotfiles
ln -sf ~/dotfiles/zshrc ~/.zshrc
ln -sf ~/dotfiles/gitconfig ~/.gitconfig
brew bundle --file=~/dotfiles/Brewfile

dotfiles 仓库里不要放密钥、令牌,这些单独放在钥匙串或不进 Git 的本地文件里。一个常见做法是在 .zshrc 末尾加载一个不进 Git 的 ~/.zshrc.local,机器专属的环境变量和别名都放在那里。

最后把上面几步串成一个 bootstrap.sh:安装命令行工具、安装 Homebrew、执行 brew bundle、建立软链接、执行 mise install。脚本要能重复执行而不出错(已存在就跳过),下次换机器或重装系统时,复原环境只需要克隆仓库再运行一次。

05 / GIT

Git 与 SSH Key

git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main

ssh-keygen -t ed25519 -C "you@example.com"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
pbcopy < ~/.ssh/id_ed25519.pub     # 复制公钥,粘贴到 GitHub / GitLab
ssh -T git@github.com              # 测试

在 ~/.ssh/config 中加入 UseKeychain yes 和 AddKeysToAgent yes,重启后不必再输入密钥口令。远程机器是租来的,建议为它单独生成一把密钥,退租时在代码托管平台上删掉即可,不要把本地主力密钥复制过去。

06 / SECURITY

安全设置

  • 修改交付时的初始密码,开启「系统设置 → 网络 → 防火墙」。
  • 评估是否开启 FileVault:更安全,但重启后需要先输入密码才能启动系统,远程机器要配合 fdesetup authrestart 使用,参见 Mac mini 7×24 服务器设置。
  • SSH 只允许密钥登录,具体做法见 远程 Mac 的 SSH 安全加固。
  • 保持系统更新:「系统设置 → 通用 → 软件更新」。

在三万主机租到的 Mac 是全新机器,你拿到管理员账户后,按本文顺序执行即可,机器在海外,Homebrew 与各语言的包管理器都可直接使用官方源。

FAQ

常见问题

mise 和 asdf 选哪个?

两者都能按项目切换语言版本。mise 兼容 asdf 的 .tool-versions 文件,速度较快,还能管理环境变量和任务;已有团队在用 asdf 的,继续用也没问题。关键是团队统一,并把版本文件提交到仓库。

远程 Mac 上需要配置 Homebrew 国内镜像吗?

取决于机器在哪。机器在海外时直接使用官方源即可;镜像源是为国内网络准备的,用在海外机器上反而可能更慢。

需要装完整的 Xcode 吗?

只做后端、前端或脚本开发,命令行工具就够了。要编译 iOS / macOS App、使用模拟器或签名打包,才需要从 App Store 或 Apple 开发者网站安装完整 Xcode。

微信
微信客服二维码扫码加微信客服手机上长按二维码识别
Telegram 客服