许多 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 命令。