通过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/