通过stow集中管理你的dotfiles
自己的类unix系统也有好几个了,算上 MacBook Pro,wsl2 和云服务器就是三个,所以需要同步一些配置文件,这样各种快捷键在不同的设备上比较顺手。
Stow
GNU Stow是一个开源符号连接管理器,可以轻松的帮助我们将散落各地的 dotfiles 组织到一个文件夹,然后维护这个文件夹到 Github 仓库就可以实现轻松的版本管理,备份和多设备同步。
安装
- MacOS 可以通过包管理器
homebrew来安装,brew install stow。 - Ubuntu 可以通过
sudo apt install stow来安装。
基础用法
假如你希望将$HOME/.zshrc在$HOME/dotfiles/这个目录下进行管理:
1 | |
这时就会发现已经成功进行了软连接,所有的更改都将同步:
1 | |
高级用法
- 假如你想管理 nvim,它的 dotfile 在
$HOME/.config/下,并且你不打算在~/dotfiles/下维护,而是在~/onedrive/dotfiles/这种别的路径,就需要指定一些参数,详情可搜索官方文档或者man stow。
1 | |
如果希望删除某个链接,可以通过
-D来删除。虽说链接过的双方内容是同步的,但是如果新增或者删除了文件,就会有多余或缺失的链接,这时候可以通过
-R,它会进行取消链接,重新链接的更新过程。对于不确定的操作,可以通过
-n或者--simulate来进行模拟,它会告诉你即将进行的操作,但是不实际进行。
设置自己的一键更新脚本
当你在多设备之间切换时,git可以帮助你更新好配置文件,而已经存在的链接如果内容变化都是同步的。但是如果配置文件增加或者减少了,就需要-R参数重新链接,这个过程可以写成脚本自动运行。
1 | |
综上,将所有的配置文件放到一个文件夹,再链接回原处,这样子管理起来就比较方便啦。
dotfiles 多设备兼容性问题
对于同样是 zshrc 配置,不同的系统,有一些自然是可以共用的,但是有一些是某个系统特有的,或者说同一个命令具体参数不同,这里有两种方法。
按需加载
可以在.zshrc中放各个系统共同的配置,而不同的系统则放在同文件夹下.zshrc_mac这种文件中。
1 | |
主机名判断
也可以把它们就放在同一个文件,通过主机名写判断逻辑。
1 | |
我个人更倾向于后者,不同的部分大多数也是相似的命令,只是参数不同,摆在一起会比较好整理。
综上,多台设备也可以无感切换了,stow真是个好东西,感谢作者。
通过stow集中管理你的dotfiles
http://sinlatansen.github.io/2024/03/15/通过stow集中管理你的dotfiles/