MAC OS Bootstraping
2026. 3. 24. 17:35ㆍ기타/scripts
728x90
SMALL
새 Mac 한 번에 세팅: Homebrew, Brewfile, Oh My Zsh
기존 맥에서 쓰던 Homebrew 패키지 목록을 Brewfile로 모아 두고, 새 맥에서는 스크립트 하나로 Command Line Tools → Homebrew → 패키지 일괄 설치 → Oh My Zsh까지 돌리는 방법을 정리했다.
무엇을 하는지
- Xcode Command Line Tools가 없으면 설치를 유도하고, 끝나면 다시 실행하라고 안내한다.
- Homebrew가 없으면 공식 설치 스크립트로 비대화형 설치한다.
- 같은 폴더의
Brewfile로brew bundle을 실행해 formula·cask를 한 번에 맞춘다. ~/.oh-my-zsh가 없을 때만 Oh My Zsh를 비대화형(--unattended)으로 설치한다. 기본 로그인 셸은 자동으로 바꾸지 않는다.
파일 배치
같은 디렉터리에 두 파일을 둔다.
scripts/mac/
Brewfile
bootstrap.shbootstrap.sh에 실행 권한을 주면 편하다.
chmod +x scripts/mac/bootstrap.sh
Brewfile
로컬에서 brew list로 나온 항목을 기준으로 두었고, 필요에 따라 줄을 추가·삭제하면 된다. 단독으로 쓰려면:
brew bundle --file=/path/to/Brewfile
# 새 Mac 부트스트랩 — 로컬 brew 목록 기준 (scripts/mac/bootstrap.sh 와 함께 사용)
# 사용: brew bundle --file="$(dirname "$0")/Brewfile"
# Shell / 도구
brew "bash"
brew "git"
brew "grep"
brew "zsh"
brew "direnv"
brew "socat"
# Python (프로젝트별 venv용)
brew "python@3.13"
brew "python@3.14"
# AWS / 클라우드 CLI
brew "awscli"
# Kubernetes / IaC
brew "helm"
brew "terraform"
brew "terraform-docs"
brew "tfenv"
brew "tflint"
brew "trivy"
# DB 클라이언트
brew "mysql-client"
# Git hooks
brew "pre-commit"
# UI (선택)
cask "openlens"
bootstrap.sh
#!/usr/bin/env bash
# 새 Mac에서 Homebrew + Brewfile + Oh My Zsh를 한 번에 설치합니다.
# 사용: bash scripts/mac/bootstrap.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BREWFILE="${SCRIPT_DIR}/Brewfile"
log() { printf '\033[1;32m[%s]\033[0m %s\n' "$(date '+%H:%M:%S')" "$*"; }
warn() { printf '\033[1;33m[%s]\033[0m %s\n' "$(date '+%H:%M:%S')" "$*" >&2; }
if ! xcode-select -p &>/dev/null; then
warn "Xcode Command Line Tools가 없습니다. 설치 창에서 확인을 눌러 주세요."
xcode-select --install || true
warn "설치 완료 후 이 스크립트를 다시 실행하세요."
exit 1
fi
if ! command -v brew &>/dev/null; then
log "Homebrew 설치 중..."
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
# Apple Silicon: PATH에 brew 추가 (현재 세션)
if [[ -x /opt/homebrew/bin/brew ]]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
elif [[ -x /usr/local/bin/brew ]]; then
eval "$(/usr/local/bin/brew shellenv)"
fi
if ! command -v brew &>/dev/null; then
warn "brew를 PATH에서 찾을 수 없습니다. 터미널을 다시 열거나 ~/.zprofile 에 brew shellenv를 추가한 뒤 다시 실행하세요."
exit 1
fi
log "brew bundle 실행: ${BREWFILE}"
brew bundle --file="${BREWFILE}"
if [[ ! -d "${HOME}/.oh-my-zsh" ]]; then
log "Oh My Zsh 설치 중..."
# --unattended: 프롬프트 없이 설치(기본 셸 자동 변경 없음 — 필요 시 chsh -s 로 zsh 지정)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
else
log "Oh My Zsh 이미 설치됨 (~/.oh-my-zsh), 건너뜀"
fi
log "완료. 터미널을 새로 열거나: eval \"\$($(brew --prefix)/bin/brew shellenv)\""
실행 방법
저장소를 클론했거나 위 두 파일만 복사한 뒤:
bash scripts/mac/bootstrap.sh
또는:
./scripts/mac/bootstrap.sh
메모
- 로그인 셸을 Homebrew zsh로:
chsh -s "$(brew --prefix zsh)/bin/zsh"(한 번만). - 패키지 목록 갱신: 기존 맥에서
brew leaves등으로 확인한 뒤Brewfile을 수정한다. - App Store / DMG 앱은 Brewfile의
cask로 옮길 수 있는 것만 넣는다. 나머지는 수동 설치 목록을 블로그에 따로 적어두면 된다.
728x90
LIST
'기타 > scripts' 카테고리의 다른 글
| direnv 사용법 (0) | 2026.03.26 |
|---|---|
| k8s(eks) deployment 상태 확인 스크립트 (0) | 2024.11.19 |
| awslogs를 이용해서 cloudwatch logs를 시간대 별로 쿼리하는 방법 (0) | 2024.11.14 |
| ECR lifecycle policy 전체 repository 적용 (0) | 2023.06.28 |
| ip address location 확인하는 방법 (0) | 2023.06.09 |