本文介绍使用rcm管理dotfiles的方法。rcm是一个rc文件管理套件(rc是命名配置文件的另一种惯例,已被某些GNU/Linux程序采用,如screen或bash),rcm提供了一套命令来管理和列出它跟踪的文件,使用dnf安装rcm,Fedora系统下运行sudo dnf install rcm命令即可。
背景 很多GNU/Linux程序的标志性功能是易于编辑的配置文件,几乎所有常见的自由软件程序都将配置存储在纯文本文件中,通常采用JSON、YAML或INI-like等结构化格式,这些配置文件经常隐藏在用户的主目录中,但是,一个基本的ls不会透露它们。UNIX标准要求以句点(或点)开头的任何文件或目录名称都被视为隐藏,并且除非用户请求,否则不会列在目录列表中,例如,要使用ls程序列出所有文件,请传递-a命令行选项。 随着时间的推移,这些配置文件变得高度定制,随着时间的推移,管理它们变得越来越具有挑战性,不仅如此,在多台计算机之间保持同步是大型组织的共同挑战,最后,很多用户对其独特的配置设置感到自豪,并希望以简单的方式与朋友分享,这就是rcm有用的地方了。
rcm入门 默认情况下,rcm使用~/.dotfiles存储它管理的所有dotfiles,托管的dotfile实际存储在~/.dotfiles中,符号链接放在预期文件的位置,例如,如果~/.bashrc由rcm跟踪,则长列表将如下所示: [link@localhost ~]$ ls -l ~/.bashrc lrwxrwxrwx. 1 link link 27 Mar 13 05:19 .bashrc -> /home/link/.dotfiles/bashrc [link@localhost ~]$ rcm由4个命令组成: mkrc:将文件转换为由rcm管理的dotfile。 lsrc:列出由rcm管理的文件。 rcup:同步由rcm管理的dotfiles。 rcdn:删除rcm管理的所有符号链接。
在两台计算机上共享bashrc 如今用户在多台计算机上拥有shell帐户是很多见的,在这些计算机之间保持dotfiles同步可能是一个挑战,这个场景将提供一种可能的解决方案,仅使用rcm和git。 首先,将文件转换(或“bless”)到由rcm和mkrc管理的点文件中: [link@localhost ~]$ mkrc -v ~/.bashrc Moving... '/home/link/.bashrc' -> '/home/link/.dotfiles/bashrc' Linking... '/home/link/.dotfiles/bashrc' -> '/home/link/.bashrc' [link@localhost ~]$ 接下来,使用lsrc验证列表是否正确: [link@localhost ~]$ lsrc /home/link/.bashrc:/home/link/.dotfiles/bashrc [link@localhost ~]$ 现在在~/.dotfiles中创建一个git存储库,并使用你选择的托管git存储库设置一个可访问的远程存储库,提交bashrc文件并推送一个新分支: [link@localhost ~]$ cd ~/.dotfiles [link@localhost .dotfiles]$ git init Initialized empty Git repository in /home/link/.dotfiles/.git/ [link@localhost .dotfiles]$ git remote add origin git@github.com:linkdupont/dotfiles.git [link@localhost .dotfiles]$ git add bashrc [link@localhost .dotfiles]$ git commit -m "initial commit" [master (root-commit) b54406b] initial commit 1 file changed, 15 insertions(+) create mode 100644 bashrc [link@localhost .dotfiles]$ git push -u origin master ... [link@localhost .dotfiles]$ 在第二台计算机上,将此存储库clone到~/.dotfiles中: [link@remotehost ~]$ git clone git@github.com:linkdupont/dotfiles.git ~/.dotfiles ... [link@remotehost ~]$ 现在用rcup更新由rcm管理的符号链接: [link@remotehost ~]$ rcup -v replacing identical but unlinked /home/link/.bashrc removed '/home/link/.bashrc' '/home/link/.dotfiles/bashrc' -> '/home/link/.bashrc' [link@remotehost ~]$ 覆盖现有的~/.bashrc(如果存在)并重启shell。 至此,目的达到。
相关主题 |