616 字
3 分钟
chezmoi

用 chezmoi 优雅管理你的跨设备 Dotfiles#

快速开始#

1. 安装 chezmoi#

chezmoi 是一个独立的静态二进制文件,无任何依赖,无需 root 权限。你可以选择以下方式之一安装:

方式一:使用 Curl(推荐用于快速上手)

Terminal window
sh -c "$(curl -fsLS https://get.chezmoi.io)" -- init --apply $GITHUB_USERNAME

这条命令会直接从你的 GitHub 用户仓库 ($GITHUB_USERNAME) 拉取 dotfiles 并立即应用。

方式二:使用包管理器 chezmoi 支持所有主流操作系统包管理器

Terminal window
# macOS (Homebrew)
brew install chezmoi
# Ubuntu/Debian
sudo apt install chezmoi
# Arch Linux
sudo pacman -S chezmoi
# Windows (Winget)
winget install chezmoi.chezmoi

更多安装方式请查阅 官方安装指南。

2. 使用#

  1. chezmoi init: 该命令会在~/.local/share/chezmoi下初始化一个 Git 仓库。
  2. chezmoi add ~/.zshrc: 将~/.zshrc纳入 chezmoi 的管理。其在~/.local/share/chezmoi下对应的文件是dot_bashrc, 下文统一称为源文件。
  3. chezmoi edit ~/.zshrc: 编辑源文件。
  4. chezmoi diff: 查看源文件和实际家目录下的对应文件的差异。
  5. chezmoi -v apply: 将源文件应用到家目录。其中-v选项会显示对实际文件所做的更改,建议添加。
  6. chezmoi cd: 进入~/.local/share/chezmoi.
  7. git add .然后git commit: 提交更改。
  8. 在 GitHub 下新建一个仓库(建议命令为dotfiles,这样在新机器的安装的时候可以使用sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply $GITHUB_USERNAME一键应用配置),然后:
Terminal window
git remote add origin git@github.com:$GITHUB_USERNAME/dotfiles.git
git branch -M main
git push -u origin main

3. 在新机器上部署#

拿到新机器后,只需三步:

  1. 安装 chezmoi(如上)。
  2. 运行 chezmoi init $GITHUB_USERNAME 克隆你的 dotfiles 仓库。
  3. 运行 chezmoi apply 应用配置。

就这么简单!你的 Shell、Git、编辑器等配置瞬间就绪。

进阶功能示例#

1. 处理机器差异(模板)#

假设你的工作电脑和笔记本使用不同的 Git 用户名,可以在 ~/.local/share/chezmoi/home/.gitconfig.tmpl 中这样写:

[user]
name = {{ if eq .chezmoi.hostname "work-laptop" }}工作姓名{{ else }}个人姓名{{ end }}
email = {{ if eq .chezmoi.hostname "work-laptop" }}work@email.com{{ else }}personal@email.com{{ end }}

chezmoi 会根据当前主机名自动渲染正确的值。

2. 加密敏感文件#

使用 chezmoi add --encrypt ~/.secrets/api-key 即可加密文件。chezmoi 会询问你使用哪种加密方式(推荐 age),加密后的文件(如 api-key.age)可以安全地提交到公开仓库,只有拥有私钥的你才能解密使用。

注意:本文基于 chezmoi 官网信息整理,具体命令和功能请以 官方文档 和你的实际版本为准。

chezmoi
https://astro.qingshanls.icu/posts/chezmoi/
作者
青山蓝山
发布于
2026-04-05
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 183 天

部分内容可能已过时