新 Mac 開箱後,我怎麼 30 分鐘裝好所有東西
這是「一鍵搞定新 Mac」系列的第一篇,帶你建立整套自動化策略的全景圖。後續文章會針對每一層深入展開。
買了新 Mac,開心拆箱、過完設定精靈之後,接下來通常是最痛苦的時刻——一個一個裝回你熟悉的軟體、調回你習慣的設定。
Chrome、VS Code、iTerm2、Line、Notion⋯⋯光是想就累了。更別說那些藏在系統偏好裡的小設定:Dock 要自動隱藏、Finder 要顯示隱藏檔、觸控板的滑動方向⋯⋯
如果你有不只一台 Mac(公司的、家裡的),或是每隔幾年就會換一次電腦,這篇就是寫給你的。
我會用四個層級,帶你從「手動裝到哭」進化到「一行指令全搞定」。
全景圖:四層自動化策略
在開始之前,先看一下全貌。Mac 的個人化設定其實散落在四個地方:
| 層級 | 管什麼 | 工具 | 難度 |
|---|---|---|---|
| 軟體安裝 | App、CLI 工具 | Homebrew Bundle | ★☆☆ |
| 設定檔 | Shell、Git、編輯器設定 | Dotfiles + Git | ★★☆ |
| 系統偏好 | Dock、Finder、鍵盤快捷鍵 | defaults write 腳本 | ★★☆ |
| 機敏資料 | SSH 金鑰、密碼、token | 每台重產 + *.local 檔 | ★☆☆ |
每一層獨立處理,組合起來就是一套完整的自動化 setup。
第一層:Homebrew Bundle — 軟體一鍵安裝
Homebrew 是 macOS 上最主流的套件管理工具。即使你不是工程師,只要會在終端機貼指令,就能用它一次裝完所有軟體。
在舊電腦上匯出清單:
brew bundle dump --file=~/Brewfile --describe
這會產生一個 Brewfile,記錄你目前裝了什麼:
# CLI 工具
brew "git" # 版本控制
brew "node" # JavaScript runtime
brew "zsh" # Shell
# GUI 應用程式(透過 cask)
cask "google-chrome"
cask "visual-studio-code"
cask "iterm2"
cask "raycast"
cask "notion"
cask "line"
# Mac App Store 的 App(透過 mas)
mas "Xcode", id: 497799835
mas "Keynote", id: 409183694
兩個之後會踩的坑,先記著:① 如果
dump出來的清單裡有vscode "..."行,建議刪掉——VS Code 自己的 Settings Sync 已經在管擴充套件,留著會兩邊重複(本系列有一篇專門講怎麼清掉這些白工)。② 上面的mas行(Mac App Store 的 App)在較新的 macOS 上mas install會需要 sudo,跑全自動腳本時可能卡住;保守做法是 Brewfile 只管cask,App Store 的 App 先到商店登入再手動裝。
在新電腦上一鍵安裝:
# 先裝 Homebrew(新電腦必須)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 然後一行搞定所有軟體
brew bundle --file=~/Brewfile
就這樣。CLI 工具、GUI App、甚至 Mac App Store 的軟體,全部一次裝回來。
3 分鐘快速上手
裝完 Homebrew 後,你只需要記住這幾個指令:
brew install <套件名> # 安裝 CLI 工具
brew install --cask <app> # 安裝 GUI App
brew list # 看裝了什麼
brew update && brew upgrade # 更新所有套件
brew bundle dump --file=~/Brewfile # 匯出目前的軟體清單
brew bundle --file=~/Brewfile # 從清單一鍵安裝
最小可用流程:
- 打開「終端機」(在 Spotlight 搜尋 “Terminal”)
- 貼上 Homebrew 安裝指令,等它跑完
- 執行
brew install --cask google-chrome試試看——Chrome 會自動下載安裝,不用開瀏覽器下載 .dmg
給非工程師的小提醒:
Brewfile就是一份「軟體清單」,純文字格式。你可以用任何文字編輯器打開它,手動新增或刪除不需要的軟體。
第二層:Dotfiles — 設定檔版本控制
macOS(和大部分 Unix 系統)的應用程式設定檔都放在家目錄,檔名以 . 開頭(所以叫 dotfiles),例如:
.zshrc— Shell 的設定(別名、環境變數).gitconfig— Git 設定(使用者名稱、預設編輯器).ssh/config— SSH 連線設定
這些檔案平常看不到(macOS 預設隱藏),但它們決定了你的工作環境長什麼樣子。
最簡單的做法:Git repo + 手動 symlink
# 1. 建立 dotfiles 資料夾
mkdir ~/dotfiles && cd ~/dotfiles
git init
# 2. 把設定檔搬進來
cp ~/.zshrc ~/dotfiles/
cp ~/.gitconfig ~/dotfiles/
# 3. 建立 symlink(讓系統讀到正確位置)
ln -sf ~/dotfiles/.zshrc ~/.zshrc
ln -sf ~/dotfiles/.gitconfig ~/.gitconfig
# 4. 推到 GitHub 保存
git add -A && git commit -m "initial dotfiles"
進階:用 chezmoi 管理
如果你有多台電腦、或是設定檔裡有些值每台不同(例如工作用的 Git email vs 個人 email),chezmoi 是目前功能最完整的 dotfiles 管理工具。
# 安裝
brew install chezmoi
# 初始化(第一台電腦)
chezmoi init
chezmoi add ~/.zshrc
chezmoi add ~/.gitconfig
chezmoi cd # 進入 chezmoi 管理的資料夾
git add -A && git commit -m "initial" && git push
# 在新電腦上,一行搞定
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply your-github-username
chezmoi 3 分鐘快速上手
chezmoi add <檔案> # 把檔案加入管理
chezmoi edit <檔案> # 編輯受管理的檔案
chezmoi apply # 把所有變更套用到系統
chezmoi diff # 預覽變更(不實際套用)
chezmoi update # 從 GitHub 拉最新版本並套用
chezmoi cd # 進入 chezmoi 的 source 資料夾
最小可用流程:
chezmoi init— 初始化chezmoi add ~/.zshrc— 加入你最重要的設定檔chezmoi cd→git add -A && git commit -m "add zshrc" && git push— 推到 GitHub- 換台電腦 →
chezmoi init --apply your-github-username— 一行還原
chezmoi 的殺手級功能是模板——同一份 .gitconfig 可以根據機器自動填入不同的 email。但這是進階用法,先把基本流程跑通就很夠用了。
另一個輕量選擇是 GNU Stow,它只做一件事:根據資料夾結構自動建立 symlink。沒有模板、沒有加密,但也因此幾乎不用學。
第三層:macOS 系統偏好 — defaults write 腳本
macOS 的系統偏好設定(Dock 大小、Finder 行為、觸控板⋯⋯)其實都存在 plist 檔案裡,可以用 defaults 指令讀寫。
把你喜歡的設定寫成一個 shell script,換電腦時跑一次就好:
#!/bin/bash
# macos-defaults.sh — 我的 macOS 偏好設定
# === Dock ===
defaults write com.apple.dock autohide -bool true # Dock 自動隱藏
defaults write com.apple.dock tilesize -int 48 # 圖示大小
defaults write com.apple.dock minimize-to-application -bool true # 最小化到 App 圖示
# === Finder ===
defaults write com.apple.finder ShowPathbar -bool true # 顯示路徑列
defaults write com.apple.finder ShowStatusBar -bool true # 顯示狀態列
defaults write com.apple.finder AppleShowAllFiles -bool true # 顯示隱藏檔
# === 鍵盤 ===
defaults write NSGlobalDomain KeyRepeat -int 2 # 按鍵重複速度(越小越快)
defaults write NSGlobalDomain InitialKeyRepeat -int 15 # 按鍵重複延遲
# === 觸控板 ===
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerDrag -bool true # 三指拖曳
# === 截圖 ===
defaults write com.apple.screencapture location -string "~/Screenshots" # 截圖存到指定資料夾
defaults write com.apple.screencapture type -string "png" # 截圖格式
# 重新啟動受影響的服務
killall Dock
killall Finder
killall SystemUIServer
echo "macOS 偏好設定已套用!部分設定需要登出再登入才會生效。"
我把用了十幾年的 Mac 設定全部匯出,檔案竟然有 5.3MB。

匯出的 macos-defaults-backup.plist 內容竟然有 14 萬多行!

(這正是為什麼別直接拿 defaults read 的全量匯出當備份——這 5.3MB、14 萬行裡絕大多數是各個 app 的暫存狀態,雜訊遠多於訊號。一份你看得懂的手寫 defaults.sh 反而更可靠、更好維護。本系列後面有一篇專門拆解「5.3MB 的 plist 為什麼不如 130 行的 shell script」。)
怎麼發現更多可設定的項目?
# 匯出目前所有設定(超長,但很有參考價值)
defaults read > ~/current-defaults.txt
# 查看特定 App 的設定
defaults read com.apple.dock
推薦參考 mathiasbynens/dotfiles 的 .macos 檔案,裡面有幾百行精心整理的設定,是這個領域的經典。你不需要全用,挑你需要的就好。
第四層:機敏資料 — 小心處理
SSH 金鑰、API token、密碼這類東西不應該放在 Git repo 裡。但與其急著找一個「同步機密」的工具,我更建議先問一個問題:這東西能不能重新產生? 答案會決定你要不要費工去加密、去搬移。
我把機密分成兩桶:
- 桶 1:可以重新產生——SSH 私鑰、GPG 簽章金鑰、GitHub token、大多數 API token。 這類東西每台新機重產一組就好,不要搬舊的。對 SSH key 來說這本來就是資安最佳實踐:私鑰永遠不離開那台機器,哪台退役就只撤銷那一把。
- 桶 2:不可以重新產生——換了就回不來的東西(某些不可重發的 license、2FA 備份碼……)。
這才是真正要小心保存的,放在
*.local檔案裡(例如~/.gitconfig.local放 email、~/.zshenv.local放 token)。這些檔不進 Git、每台手動建。
SSH 金鑰怎麼處理(重產派做法):新電腦不要從舊電腦搬 ~/.ssh/。裝好 gh 後跑 gh auth login、選 SSH,它會幫你產一把全新的 key 並自動把公鑰上傳到 GitHub——一步同時搞定認證又免搬私鑰。(這步是 private repo 在新機的第一道關卡,本系列後面有專篇細講。)
我自己不用 1Password(也不用其他商業密碼管理器)。如果你已經在用 1Password / Bitwarden,它們確實能同步密碼、也支援 SSH Agent,照用沒問題;但它不是必需品。光是「可重產的每台重產、不可重產的放
*.local」,就能覆蓋大多數人的需求。至於免每次重打 SSH key 密碼——用 macOS 內建的鑰匙圈(Keychain) 就好:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519,不必為了這個裝密碼管理器。
原則:如果一個檔案裡有密碼或 token,它就不該出現在 GitHub 上,即使是 private repo。chezmoi 的 age 加密只有在你的「桶 2」長大到有「不可重產又必須版控」的機密時才需要——桶 2 是空的,你連 age 都不用碰。
組合技:一鍵 Setup 腳本
把前面四層串起來,就是一個完整的新電腦 setup 腳本:
#!/bin/bash
# install.sh — 新 Mac 一鍵配置
set -e # 遇到錯誤就停止
echo "=== Step 1: 安裝 Homebrew ==="
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon:把 brew 加進當前 shell
echo "=== Step 2: GitHub 認證 + 產一把新 SSH key ==="
# 這步要先做:dotfiles 放 private repo 的話,沒先認證根本 clone 不下來。
# gh auth login 選 SSH 會自動產一把新 key 並上傳公鑰到 GitHub,一步搞定認證又免搬私鑰。
brew install gh chezmoi
gh auth login # → GitHub.com → SSH → "Generate a new SSH key?" → Yes
echo "=== Step 3: 套用 dotfiles(順手把 Brewfile 一起拉下來)==="
chezmoi init --apply your-github-username
# 或者如果用 Stow:
# cd ~/dotfiles && stow zsh git ssh
echo "=== Step 4: 安裝所有軟體 ==="
brew bundle --file="$(chezmoi source-path)/Brewfile"
echo "=== Step 5: 套用 macOS 偏好設定 ==="
chmod +x "$(chezmoi source-path)/macos-defaults.sh"
"$(chezmoi source-path)/macos-defaults.sh"
echo "=== Done! ==="
echo "記得手動處理:"
echo " 1. 建立 ~/.gitconfig.local(email)和 ~/.zshenv.local(GITHUB_TOKEN 等 secrets)"
echo " 2. 登入 iCloud、VS Code Settings Sync 等 App 內建同步"
echo " 3. 登出再登入讓所有設定生效"
注意 Step 2 的順序:很多人(包括早期的我)會把「裝軟體」放在最前面,結果新機要 clone 自己的 private dotfiles repo 時,卡在沒有認證。先用
gh auth login(選 SSH、產新 key)把認證和金鑰一次搞定,後面才會順。這個「新機第一步認證的雞生蛋」本系列後面有專篇細講。
別忘了這些 App 自帶的同步功能
有些軟體有內建的設定同步,善用它們可以省更多事:
| 軟體 | 同步方式 |
|---|---|
| VS Code | 內建 Settings Sync(登入 GitHub 即可) |
| Chrome | 登入 Google 帳號同步書籤、擴充套件 |
| Raycast | 內建 Cloud Sync |
| 1Password | 雲端同步 |
| Claude Code | 複製 ~/.claude/ 資料夾 |
我的建議:從 Brewfile 開始就好
如果上面看起來很多,不用一次全做。我的建議是:
- 今天就做:跑
brew bundle dump --file=~/Brewfile,把軟體清單匯出來 - 這週做:建一個
dotfilesGit repo,先放.zshrc和.gitconfig - 有空再做:慢慢累積
macos-defaults.sh,遇到什麼設定就加什麼
不需要一開始就完美。每次你調了一個設定、裝了一個新工具,順手更新 dotfiles repo,半年後你就會有一套很完整的自動化配置。
下次換電腦,你會感謝現在的自己。