【Tools】chezmoi 跨多台不同的机器管理 dotfiles 的工具

chezmoi是一个跨多台不同的机器管理 dotfiles 的工具,方便每次在新的电脑/服务器的时候不用麻烦的重新配置一些 config 了

dotfile: 简言之就是应用程式的 config,例如~/.vimrc就是dotfile。Linux万物皆文件,Linux 文件名以点开头就会变成隐藏文件,一般也是配置文件,不让一般使用者看到。

1 安装

安装带自定义路径中:

bash 复制代码
sh -c "$(wget -qO- chezmoi.io/getlb)" -- -b $HOME/.local/bin

但是一般由于网络问题连不上,请开启代理,或者配置代理之后使用 proxy 命令:

bash 复制代码
sh -c "$(proxy wget -qO- chezmoi.io/getlb)" -- -b $HOME/.local/bin

由于是自定义安装路径在 $HOME/.local/bin ,所以在 .bashrc 或者 .zshrc 中加入PATH:

bash 复制代码
# echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
# source ~/.bashrc
source ~/.zshrc

2 使用

  1. 初始化 chezmoi

    bash 复制代码
    chezmoi init

    这会在 ~/.local/share/chezmoi 中创建一个新的 Git 本地仓库,chezmoi 将在此存储其源状态。

  2. 添加要管理的第一个文件:如将 ~/.bashrc 文件交给 chezmoi 管理

    bash 复制代码
    chezmoi add ~/.bashrc

    ~/.bashrc 会被复制到 ~/.local/share/chezmoi/dot_bashrc。

  3. 查看和应用更改

    查看 chezmoi 将对文件系统做出的更改:

    bash 复制代码
    chezmoi diff

    然后应用更改到文件系统:

    bash 复制代码
    chezmoi -v apply
  4. 提交更改到 Git:进入 chezmoi 的源目录使用 Git 提交更改

    bash 复制代码
    chezmoi cd
    git add .
    git commit -m "Initial commit"
  5. 推送到 GitHub:先创建一个名为 dotfiles 的 GitHub 仓库,然后运行以下命令,将 dotfiles 推送到远程仓库:

    bash 复制代码
    git remote add origin git@github.com:$GITHUB_USERNAME/dotfiles.git
    git branch -M main
    git push -u origin main

3 设置新机器

直接通过一行命令即可将在 Github 上的已有的 dotfile 存储库配置到这台新机器上:

bash 复制代码
chezmoi init --apply https://github.com/$GITHUB_USERNAME/dotfiles.git
相关推荐
知已难寻1 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
默|笙1 小时前
【Linux网络】网络层协议 IP(1)理解报头、网段划分
linux·网络·tcp/ip
修己xj4 小时前
nslookup 使用指南:两种模式与常用查询技巧
linux
唠玖馆6 小时前
文件系统详解
linux·文件系统·ext2
GeW6 小时前
当Linux内核开始“确定性”,制造高端化才有了底层语法
linux
星恒随风7 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
StarsGreen10 小时前
libva在intel平台上的前端流程简介
linux
坤坤子吖12 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
青瓦梦滋13 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
沫璃染墨14 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp