尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MacBook开发环境自动化配置:从零到一搭建高效开发工作流

MacBook开发环境自动化配置:从零到一搭建高效开发工作流 在实际开发工作中我们常常会遇到这样的场景拿到一台全新的 MacBook需要快速配置好开发环境从基础的系统设置、命令行工具、包管理器到编程语言环境、IDE、数据库、版本控制等一系列工具链。这个过程繁琐且容易出错尤其是当需要为团队新成员或自己更换设备时重复劳动令人疲惫。如果能有一个自动化的脚本像一位经验丰富的“父亲”一样有条不紊地帮你完成所有设置无疑能极大提升效率。本文就将扮演这个“父亲”的角色带你用代码Codex 在此可引申为“代码的智慧”来自助解决新 MacBook 的开发环境设置难题。我们将创建一个名为mac-dev-setup的自动化配置脚本。这个脚本的目标是从零开始一键或分步完成一个开发者所需的核心环境搭建。文章不仅会提供可运行的脚本代码更会详细解释每一步背后的原理、可能遇到的坑以及如何排查问题确保你不仅能使用更能理解和定制它。1. 理解自动化环境配置的核心价值与设计思路在动手写代码之前我们需要明确为什么要自动化以及自动化脚本应该涵盖哪些方面。手动设置环境的问题在于步骤依赖记忆、容易遗漏、难以复现、且耗时。自动化脚本则将最佳实践固化下来确保每次配置都一致、高效。一个完整的开发环境配置通常包括以下几个层次系统层基础命令行工具、系统偏好设置如触发角、键盘速率。包管理层安装 HomebrewmacOS 缺失的包管理器这是后续几乎所有软件安装的基础。开发工具层通过 Homebrew 安装 Git、Node.js、Python、Java 等运行时和工具。应用层安装 VS Code、Chrome、iTerm2 等图形化应用。配置层设置 Shell如 Zsh 配合 Oh My Zsh、配置 Git 全局信息、安装 IDE 插件等。我们的脚本设计将遵循“幂等性”原则即无论运行多少次结果都应该是一致的。这意味着脚本需要能够检测某个工具是否已安装避免重复安装或冲突。2. 环境准备与脚本项目结构在开始编写主脚本之前我们需要先规划好项目结构。虽然只是一个脚本但良好的结构有助于维护和扩展。2.1 创建项目目录与文件在你的新 Mac 上打开“终端”应用可以在 Spotlight 中搜索Terminal执行以下命令# 创建一个专门存放自动化脚本的目录 mkdir -p ~/Projects/mac-dev-setup cd ~/Projects/mac-dev-setup # 创建主脚本文件 touch setup.sh chmod x setup.sh # 赋予执行权限 # 创建用于记录已安装软件列表和配置的目录 mkdir -p logs configs2.2 脚本技术栈选择我们选择 Bash Shell 作为脚本语言因为它是 macOS 终端的原生语言无需额外安装解释器并且能很好地调用系统命令和 Homebrew。对于更复杂的逻辑也可以嵌入 Python 或 Ruby 脚本但本文以 Bash 为主。注意从 macOS Catalina 开始默认 Shell 已从 Bash 改为 Zsh。我们的脚本会在 Bash 环境下运行但最终会为你配置 Zsh。脚本开头需要声明使用 Bash。3. 分步实现自动化配置脚本接下来我们将逐步构建setup.sh脚本。每个步骤都是一个函数主流程按顺序调用这些函数。3.1 脚本头与全局变量首先编写脚本的开头部分设置一些全局变量和基础函数。#!/bin/bash # mac-dev-setup.sh # 新 MacBook 开发环境一键配置脚本 set -e # 遇到任何命令执行失败返回非零状态就退出脚本避免错误累积 set -u # 遇到未定义的变量时报错 # 定义颜色输出让日志更清晰 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m BLUE\033[0;34m NC\033[0m # No Color # 日志函数 log_info() { echo -e ${BLUE}[INFO]${NC} $1 } log_success() { echo -e ${GREEN}[SUCCESS]${NC} $1 } log_warning() { echo -e ${YELLOW}[WARNING]${NC} $1 } log_error() { echo -e ${RED}[ERROR]${NC} $1 } # 检查命令是否存在的函数 command_exists() { command -v $1 /dev/null 21 }set -e和set -u是编写健壮 Bash 脚本的好习惯。颜色定义让不同级别的信息一目了然。command_exists函数用于在安装前检查工具是否已存在。3.2 安装 Homebrew 包管理器Homebrew 是 macOS 上安装开发工具的事实标准。第一步就是安装它。install_homebrew() { log_info 检查并安装 Homebrew... if command_exists brew; then log_success Homebrew 已安装。 brew update # 更新 Homebrew 自身 else log_warning 未找到 Homebrew开始安装... # 使用官方安装脚本注意网络环境 /bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh) # 对于 Apple Silicon Mac (M1/M2/M3)需要将 brew 添加到 PATH if [[ $(uname -m) arm64 ]]; then echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zprofile eval $(/opt/homebrew/bin/brew shellenv) log_info 已为 Apple Silicon 芯片配置 Homebrew PATH。 fi fi log_success Homebrew 就绪。 }关键解释与常见坑网络问题curl命令可能因网络问题失败。如果遇到可以尝试多次执行或检查本地网络设置。脚本中的 URL 是官方源。Apple Silicon (M系列芯片)自 Homebrew 3.0.0 起在 ARM 架构 Mac 上默认安装到/opt/homebrew而非传统的/usr/local。因此必须将对应的bin目录添加到 Shell 的 PATH 环境变量中。脚本中通过判断uname -m来识别架构并修改~/.zprofile文件。权限问题安装过程中可能需要输入用户密码sudo脚本会交互式提示这是正常的。3.3 通过 Homebrew 安装命令行工具和开发环境安装好 Homebrew 后我们可以用它来安装一系列基础工具。install_cli_tools() { log_info 通过 Homebrew 安装核心命令行工具... # 定义需要安装的工具列表 # ‘formula’ 是 Homebrew 中对开源软件包的称呼 FORMULAE( git # 版本控制 wget # 网络下载工具比 curl 在某些场景下更友好 tree # 以树状图列出目录内容 htop # 交互式进程查看器 jq # JSON 处理器 yarn # Node.js 包管理器 (可选也可通过 npm 安装) python3.11 # 指定 Python 3.11避免安装最新版可能的不兼容 node18 # 指定 Node.js 18 LTS 版本 openjdk17 # Java 开发环境 (JDK 17) maven # Java 项目构建工具 gradle # 另一个 Java 构建工具 mysql # 数据库 redis # 内存数据库 postgresql14 # 另一个常用数据库 docker # 容器化平台 docker-compose # Docker 编排工具 ) for formula in ${FORMULAE[]}; do if brew list --formula | grep -q ^${formula}\$; then log_info ${formula} 已安装跳过。 else log_info 正在安装 ${formula} ... brew install $formula fi done # 对于通过 指定版本的软件如 node18需要手动链接link log_info 处理特定版本的链接... brew link --overwrite node18 openjdk17 python3.11 postgresql14 2/dev/null || log_warning 某些链接可能已存在或跳过这通常是正常的。 log_success 命令行工具安装完成。 }关键解释与常见坑版本管理像 Python、Node.js 这类语言直接安装最新版 (python,node) 可能在旧项目中引发兼容性问题。因此我们使用符号指定一个长期支持LTS或较稳定的版本如python3.11,node18。这体现了“父亲”般的审慎。链接Linking使用安装的软件包默认不会链接到全局路径需要执行brew link命令。--overwrite参数会覆盖可能存在的旧链接。2/dev/null将错误输出重定向到空设备避免因链接已存在而产生的警告刷屏。安装速度Homebrew 从网络下载软件包首次安装可能较慢。可以考虑替换 Homebrew 源如中科大源来加速但这会增加脚本的复杂性和维护成本本文为保持通用性使用官方源。依赖冲突极少数情况下不同软件包可能有依赖冲突。如果遇到脚本会报错并停止因为开头设置了set -e。此时需要根据错误信息手动解决冲突后再运行。3.4 通过 Homebrew Cask 安装图形化应用Homebrew Cask 是 Homebrew 的扩展用于安装 macOS 应用程序.app。install_cask_apps() { log_info 通过 Homebrew Cask 安装图形化应用... # 定义需要安装的 Cask 应用列表 CASKS( google-chrome # 浏览器 visual-studio-code # 代码编辑器 iterm2 # 终端替代品 slack # 团队协作 notion # 笔记工具 postman # API 测试工具 dbeaver-community # 数据库图形客户端 rectangle # 窗口管理工具强烈推荐 itsycal # 菜单栏日历 stats # 菜单栏系统监控 ) for cask in ${CASKS[]}; do if brew list --cask | grep -q ^${cask}\$; then log_info ${cask} 已安装跳过。 else log_info 正在安装 ${cask} ... brew install --cask $cask fi done log_success 图形化应用安装完成。 }关键解释--cask参数告诉 Homebrew 这是图形化应用。安装后这些应用会出现在/Applications目录下。rectangle和itsycal这类工具能显著提升 macOS 的使用效率是“父亲”推荐的必备效率工具。3.5 配置 Shell 环境 (Zsh 与 Oh My Zsh)Zsh 是 macOS 现代版本的默认 ShellOh My Zsh 是一个社区驱动的框架提供了丰富的主题和插件。configure_shell() { log_info 配置 Zsh 和 Oh My Zsh... # 确保默认 Shell 是 Zsh if [[ $SHELL ! *zsh* ]]; then log_warning 当前 Shell 不是 Zsh正在更改... chsh -s /bin/zsh log_success 已设置 Zsh 为默认 Shell。需要重新登录生效。 else log_info Zsh 已是默认 Shell。 fi # 安装 Oh My Zsh (如果未安装) if [ ! -d $HOME/.oh-my-zsh ]; then log_info 安装 Oh My Zsh... # 使用国内镜像加速安装 sh -c $(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh) --unattended log_success Oh My Zsh 安装完成。 else log_info Oh My Zsh 已安装。 fi # 备份并更新 .zshrc 配置文件 log_info 配置 .zshrc... ZSHRC_FILE$HOME/.zshrc if [ -f $ZSHRC_FILE ]; then cp $ZSHRC_FILE $ZSHRC_FILE.backup.$(date %Y%m%d_%H%M%S) log_info 已备份原 .zshrc 文件。 fi # 写入推荐配置 cat $ZSHRC_FILE EOF # 启用 Oh My Zsh export ZSH$HOME/.oh-my-zsh ZSH_THEMErobbyrussell # 经典主题清晰明了 plugins(git zsh-autosuggestions zsh-syntax-highlighting docker) # 常用插件 source $ZSH/oh-my-zsh.sh # 用户自定义配置 # 1. 语言环境设置 export LANGen_US.UTF-8 export LC_ALLen_US.UTF-8 # 2. 别名 (Aliases) alias llls -alF alias lals -A alias lls -CF alias grepgrep --colorauto alias ..cd .. alias ...cd ../.. alias ~cd ~ # 3. 开发环境 PATH 设置 # Homebrew (Apple Silicon) if [[ $(uname -m) arm64 ]]; then eval $(/opt/homebrew/bin/brew shellenv) fi # 自定义 bin 目录 export PATH$HOME/bin:$PATH # 4. Java 环境 (根据实际安装路径调整) export JAVA_HOME$(/usr/libexec/java_home -v 17 2/dev/null || echo ) if [ -n $JAVA_HOME ]; then export PATH$JAVA_HOME/bin:$PATH fi # 5. Node.js 环境 (通过 nvm 管理更佳此处为 Homebrew 安装方式) export NODE_PATH/usr/local/lib/node_modules # Intel # export NODE_PATH/opt/homebrew/lib/node_modules # Apple Silicon # 6. Python 环境 export PATH/usr/local/opt/python3.11/bin:$PATH # Intel # export PATH/opt/homebrew/opt/python3.11/bin:$PATH # Apple Silicon # 7. 历史命令配置 export HISTSIZE10000 export SAVEHIST10000 setopt HIST_IGNORE_ALL_DUPS # 忽略重复命令 setopt HIST_FIND_NO_DUPS # 查找时不显示重复 EOF log_success .zshrc 配置文件已生成。 # 安装推荐的 Zsh 插件需要 git log_info 安装 Zsh 插件... ZSH_CUSTOM${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom} # 自动建议插件 if [ ! -d $ZSH_CUSTOM/plugins/zsh-autosuggestions ]; then git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions fi # 语法高亮插件 if [ ! -d $ZSH_CUSTOM/plugins/zsh-syntax-highlighting ]; then git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting fi log_success Zsh 配置完成。重启终端或运行 source ~/.zshrc 生效。 }关键解释与常见坑Oh My Zsh 安装官方安装脚本可能较慢脚本中使用了 Gitee 镜像。--unattended参数使其以非交互模式运行避免脚本卡在确认步骤。配置文件管理脚本会备份原有的.zshrc文件然后完全重写。这是一个激进但确保一致性的做法。在实际使用中你可能需要将旧配置中的个性化设置合并到新文件中。插件安装zsh-autosuggestions输入建议和zsh-syntax-highlighting语法高亮是两个极大提升终端体验的插件脚本会自动从 GitHub 克隆。架构判断.zshrc配置中包含了针对 Intel 和 Apple Silicon 芯片的不同路径注释。脚本生成的配置是通用模板你需要根据自己电脑的芯片类型取消注释对应的行。这是自动化中仍需手动干预的一个点但只需做一次。3.6 配置 Git 和 SSH 密钥作为开发者Git 配置和 SSH 密钥是接入代码仓库如 GitHub, GitLab的通行证。configure_git_and_ssh() { log_info 配置 Git 和 SSH 密钥... # 配置 Git 全局用户信息请替换成你自己的信息 read -p 请输入 Git 全局用户名: git_username read -p 请输入 Git 全局邮箱: git_email git config --global user.name $git_username git config --global user.email $git_email git config --global core.editor code --wait # 设置 VS Code 为默认编辑器 git config --global init.defaultBranch main # 设置默认分支为 main git config --global pull.rebase false # 根据团队习惯设置false 表示 merge log_success Git 全局配置完成。 # 生成 SSH 密钥如果不存在 SSH_KEY_PATH$HOME/.ssh/id_ed25519 if [ ! -f $SSH_KEY_PATH ]; then log_info 未找到 SSH 密钥开始生成新的 Ed25519 密钥对... read -p 请输入用于 SSH 密钥的邮箱可选直接回车使用 Git 邮箱: ssh_email ssh_email${ssh_email:-$git_email} ssh-keygen -t ed25519 -C $ssh_email -f $SSH_KEY_PATH -N # -N 表示空密码 log_success SSH 密钥已生成在 ~/.ssh/ 目录。 else log_info SSH 密钥已存在。 fi # 显示公钥方便用户添加到 GitHub/GitLab log_info 你的 SSH 公钥是 cat $SSH_KEY_PATH.pub echo log_warning 请将上述公钥内容复制并添加到你的 GitHub/GitLab 等代码托管平台的 SSH Keys 设置中。 }关键解释与常见坑交互式输入使用read -p命令提示用户输入个人信息使脚本更具通用性。-p参数指定提示文本。Git 配置core.editor设置为code --wait可以让 Git 在需要输入提交信息时在 VS Code 中打开临时文件编辑保存后继续。SSH 密钥类型使用ed25519算法生成密钥它比传统的rsa更安全、更快速。-N 参数设置密钥为空密码方便自动化但降低了安全性。生产环境或对安全要求高的场景建议设置强密码并配合 ssh-agent 管理。公钥分发脚本会打印出公钥内容这是需要手动复制并添加到远程仓库的一步目前无法完全自动化。3.7 配置 VS Code 和安装常用扩展VS Code 的强大离不开扩展。我们可以编写一个列表让脚本自动安装。configure_vscode() { log_info 配置 Visual Studio Code 和安装扩展... # 首先确保 VS Code 的命令行工具 code 可用 # 通常安装 Cask 版 VS Code 后会自动配置如果没有可以手动执行 # ln -sf /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code /usr/local/bin/ if ! command_exists code; then log_warning code 命令未找到尝试创建符号链接... sudo ln -sf /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code /usr/local/bin/ 2/dev/null || true fi # 定义需要安装的扩展 ID 列表 # 可以通过在 VS Code 中 CtrlShiftP - Developer: Show Running Extensions 查看扩展ID EXTENSIONS( ms-python.python # Python ms-vscode.vscode-typescript-next # TypeScript vscjava.vscode-java-pack # Java Extension Pack (包含多个扩展) ms-azuretools.vscode-docker # Docker hashicorp.terraform # Terraform redhat.vscode-yaml # YAML 支持 esbenp.prettier-vscode # 代码格式化 dbaeumer.vscode-eslint # ESLint eamodio.gitlens # Git 增强 github.copilot # GitHub Copilot (需要登录) github.copilot-chat # GitHub Copilot Chat ms-vsliveshare.vsliveshare # Live Share ) log_info 开始安装 VS Code 扩展... for extension in ${EXTENSIONS[]}; do if code --list-extensions | grep -q ^${extension}\$; then log_info 扩展 ${extension} 已安装跳过。 else log_info 正在安装扩展: ${extension} ... code --install-extension $extension --force 2/dev/null || log_warning 安装 ${extension} 可能失败请手动检查。 fi done # 可选的 VS Code 设置同步如果你使用 Settings Sync log_info VS Code 扩展安装完成。 log_warning 提示你可以通过 VS Code 的 Settings Sync 功能登录 GitHub/Microsoft 账户来同步你的所有设置和扩展。 }关键解释与常见坑code命令VS Code 的 Cask 安装包通常会自动在/usr/local/bin创建code命令的软链接。如果没有脚本会尝试创建。需要sudo权限。扩展安装code --install-extension是 VS Code 命令行接口CLI的功能。脚本会检查扩展是否已安装避免重复安装。扩展 ID 可以从 VS Code 扩展商店的 URL 中获取。安装失败网络问题或扩展 ID 错误可能导致安装失败。脚本通过2/dev/null || log_warning ...来捕获错误并给出警告而不是让整个脚本停止。Copilot 扩展安装 GitHub Copilot 扩展后仍需在 VS Code 内登录 GitHub 账户并同意条款才能使用。3.8 主执行流程最后我们将所有步骤串联起来并添加一些友好的提示和日志记录。main() { log_info 开始新 MacBook 开发环境自动化配置 echo 本脚本将执行以下操作 echo 1. 安装/更新 Homebrew echo 2. 安装命令行开发工具 (Git, Node.js, Python, Java, Docker等) echo 3. 安装图形化应用 (Chrome, VS Code, iTerm2等) echo 4. 配置 Zsh Shell 和 Oh My Zsh echo 5. 配置 Git 和生成 SSH 密钥 echo 6. 配置 VS Code 并安装常用扩展 echo 整个过程可能需要较长时间取决于网络速度。 read -p 是否继续(y/N): -n 1 -r echo if [[ ! $REPLY ~ ^[Yy]$ ]]; then log_error 用户取消操作。 exit 1 fi # 记录开始时间 START_TIME$(date %s) # 执行各步骤 install_homebrew install_cli_tools install_cask_apps configure_shell configure_git_and_ssh configure_vscode # 记录结束时间 END_TIME$(date %s) DURATION$((END_TIME - START_TIME)) log_success 所有配置步骤已完成总耗时: ${DURATION} 秒。 log_warning ⚠️ 请注意 echo - 部分配置如默认 Shell 更改需要完全退出并重新打开终端才能生效。 echo - 请将上面显示的 SSH 公钥添加到你的代码托管平台。 echo - 建议重启电脑以使所有环境变量和应用程序更改完全生效。 echo log_info 接下来你可以 echo - 在终端输入 java -version, node --version, python3 --version 验证环境。 echo - 打开 VS Code查看已安装的扩展。 echo - 开始你的开发项目 } # 脚本入口点 if [[ ${BASH_SOURCE[0]} ${0} ]]; then main fi4. 运行验证与结果分析脚本编写完成后就可以运行了。4.1 运行脚本在终端中进入脚本所在目录并执行cd ~/Projects/mac-dev-setup ./setup.sh脚本会首先打印计划并请求确认。输入y或Y后开始执行。你会看到彩色的日志信息滚动显示每一步的进度。4.2 验证安装结果脚本运行完毕后不要急于关闭终端。打开一个新的终端窗口或标签页执行以下命令进行验证# 验证基础工具 brew --version git --version docker --version # 验证编程语言环境 java -version node --version python3 --version # 验证 Shell 配置 echo $SHELL # 应该输出 /bin/zsh ls -la ~/.zshrc # 检查配置文件是否存在4.3 检查应用程序打开“启动台”Launchpad检查是否已安装 Chrome、VS Code、iTerm2 等应用。打开 VS Code在扩展视图CmdShiftX中查看是否已安装脚本中列出的扩展。5. 常见问题排查与解决方案即使是最周密的脚本在实际运行中也可能遇到问题。下面列出常见问题及其排查路径。5.1 Homebrew 安装或更新失败问题现象可能原因检查方式处理建议curl下载安装脚本失败网络连接问题或 raw.githubusercontent.com 域名访问不畅在浏览器中尝试打开脚本 URL1. 检查网络。2. 使用国内镜像/bin/bash -c $(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)brew install速度极慢或失败Homebrew 核心源brew.sh或 bottles 镜像访问慢运行brew doctor检查观察下载 URL1. 更换 Homebrew 源中科大、清华。2. 使用代理需自行配置。注意更换源需谨慎可能引入不一致性。安装软件时提示权限不足目标目录如/usr/local权限问题查看命令输出的完整错误信息运行sudo chown -R $(whoami) /usr/local/*(Intel) 或/opt/homebrew/*(Apple Silicon)此操作有风险需确认目录5.2 软件链接Linking冲突问题现象可能原因检查方式处理建议brew link失败提示文件已存在系统或其他包管理器如 MacPorts已安装了同名软件ls -la /usr/local/bin/node或which node1. 备份并删除冲突文件。2. 使用brew link --overwrite --force谨慎会覆盖。3. 彻底卸载冲突的旧版本。5.3 Shell 配置不生效问题现象可能原因检查方式处理建议新终端打开后别名或 PATH 没变1. 未重新加载.zshrc。2. 配置写在了错误的文件如.bash_profile。3. 终端模拟器未以登录 Shell 启动。1.echo $SHELL。2.cat ~/.zshrc查看内容。3. 在 iTerm2 中检查 Preferences - Profiles - General - Command。1. 执行source ~/.zshrc。2. 确认脚本修改的是~/.zshrc。3. 在 iTerm2 的 Command 中填写/bin/zsh -l(-l表示登录 Shell)。5.4 VS Codecode命令找不到问题现象可能原因检查方式处理建议终端中执行code .提示命令未找到符号链接未创建或不在 PATH 中ls -la /usr/local/bin/code或which code1. 手动创建链接sudo ln -sf “/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code” /usr/local/bin/。2. 或将 VS Code 的bin目录加入 PATH。5.5 脚本执行中途停止如果脚本在某个步骤报错退出首先查看最后的错误信息。由于脚本开头设置了set -e任何命令失败都会导致退出。常见的解决步骤是单独运行失败的那条命令看具体报错。根据错误信息搜索解决方案。解决后可以注释掉脚本中已成功的步骤从失败点开始重新运行。6. 最佳实践与扩展方向这个脚本是一个起点你可以根据自己的需求进行定制和扩展。6.1 脚本维护最佳实践版本控制将整个mac-dev-setup目录纳入 Git 仓库方便追踪更改和回滚。模块化将每个大步骤如install_cli_tools拆分成独立的.sh文件主脚本通过source引入提高可读性和可维护性。参数化将用户名、邮箱、要安装的软件列表等提取为脚本开头的变量甚至通过命令行参数传入避免硬编码。日志记录将脚本的所有输出重定向到文件便于事后审计。可以在脚本开头添加exec (tee -a “setup_$(date %Y%m%d).log”) 21。幂等性检查像脚本中做的那样在安装前检查软件是否已存在避免重复操作和潜在冲突。6.2 扩展方向配置同步集成dotfiles管理如使用 GNU Stow将.zshrc,.gitconfig, VS Codesettings.json等配置文件也进行版本化和同步。云端备份与恢复将脚本和配置存放在 GitHub 私有仓库。在新电脑上只需克隆仓库并运行脚本即可完全恢复熟悉的环境。条件化安装根据用户选择如前端开发、后端开发、数据科学安装不同的工具集。可以使用简单的菜单交互。非 Homebrew 软件对于无法通过 Homebrew 安装的软件如某些企业客户端、特定版本 JDK可以增加下载.dmg或.pkg并安装的逻辑。系统设置自动化使用defaults write命令自动化 macOS 系统偏好设置如键盘重复速率、触摸板手势、Dock 栏自动隐藏等。通过这样一个自动化脚本你不仅解决了自己新电脑的设置难题更构建了一套可重复、可分享、可演进的环境配置方案。这正体现了“用 Codex 自助解决难题”的精髓将经验转化为代码让机器处理琐碎让人专注于创造。下次再拿到新 Mac或者需要为团队成员准备环境时运行这个脚本一切尽在掌握。
返回列表