使用 rcm 管理点文件

许多 GNU/Linux 程序的一个标志性特性是易于编辑的配置文件。 几乎所有常见的免费软件程序都将配置设置存储在纯文本文件中,通常采用 JSON、YAML 或 “类似 INI”. 这些配置文件经常隐藏在用户的主目录中。 但是,基本的 ls 不会显示它们。 UNIX 标准要求任何以句点(或“点”)开头的文件或目录名称都被视为“隐藏”,除非用户请求,否则不会在目录列表中列出。 为了 example要使用 ls 程序列出所有文件,请传递 -a 命令行选项。

随着时间的推移,这些配置文件变得高度定制化,随着时间的推移,管理它们变得越来越具有挑战性。 不仅如此,让它们在多台计算机之间保持同步是大型组织中的一个常见挑战。 最后,许多用户对其独特的配置设置感到自豪,并希望以一种简单的方式与朋友分享。 那是哪里 rcm 步入。

rcm 是一个“rc”文件管理套件(“rc”是另一种命名配置文件的约定,已被某些 GNU/Linux 程序如 screen 或 bash)。 rcm 提供一套命令来管理和列出它跟踪的文件。 安装 rcm 使用 dnf.

入门

默认情况下, rcm 使用 ~/.dotfiles 来存储它管理的所有点文件。 托管点文件实际上存储在 ~/.dotfiles 中,并且符号链接放置在预期文件的位置。 为了 example如果 ~/.bashrc 被跟踪 rcm,一个长列表看起来像这样。

[link@localhost ~]$ ls -l ~/.bashrc
lrwxrwxrwx. 1 link link 27 Dec 16 05:19 .bashrc -> /home/link/.dotfiles/bashrc
[link@localhost ~]$

rcm 由4个命令组成:

  • mkrc – 将文件转换为由 rcm 管理的点文件
  • lsrc – 列出由 rcm 管理的文件
  • rcup – 同步 rcm 管理的点文件
  • rcdn – 删除所有由 rcm 管理的符号链接

在两台计算机上共享 bashrc

今天,用户在多台计算机上拥有 shell 帐户的情况并不少见。 在这些计算机之间保持点文件同步可能是一个挑战。 此方案将提供一种可能的解决方案,仅使用 rcm混帐.

首先,将文件转换(或“祝福”)为由 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 [email protected]: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]$

在第二台机器上,将此存储库克隆到 ~/.dotfiles。

[link@remotehost ~]$ git clone [email protected]:linkdupont/dotfiles.git ~/.dotfiles
...
[link@remotehost ~]$

现在更新由管理的符号链接 rcm 与 rcup。

[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。

就是这样! 特定于主机的选项 (-o) 是对上述方案的有用补充。 和往常一样,一定要阅读手册页; 它们包含丰富的 example 命令。