让我的 zsh 或 bash 配置文件在所有机器上保持同步

让我的 zsh 或 bash 配置文件在所有机器上保持同步

我在几台不同的机器上工作。我对 shell、提示符的外观、别名等有很多特定的要求。

您认为保持我的所有机器外壳运行相同的最佳方法是什么?

首先,我知道不同的机器需要不同的箱子路径和其他差异,所以我的第一个想法是在我的配置文件的末尾包含一个文件,这是我们将保持同步的文件。

保持文件同步的最佳方法是什么?我可以将文件放在远程系统上,也许使用 git 来推送,然后偶尔拉取我的更改。但是,Rsync 不是更适合这样做吗?

答案1

我是这样做的:

  1. 我从未将真实内容放在~/.bashrc~/.bash_profile文件上,相反,这些文件只是指向保存在我的主文件夹子目录中的真实配置文件的符号链接,例如~/dotfiles/bashrc~/dotfiles/bash_profile

  2. ~/dotfiles使用 Git 将文件夹置于源代码控制之下,并托管在 GitHub.com 上

  3. 当我安装新系统时,我只需将 GitHub 存储库克隆到新的本地~/dotfiles文件夹并创建所有符号链接(目前是手动操作,但此步骤应该很容易实现自动化)。

  4. 我对其他配置文件也使用同样的程序,比如.hgrcMercurial 的配置文件.vimrc和其他几个文件。

  5. 每当我编辑其中一个配置文件时,我只需提交并推送到 GitHub,然后在其他每台机器上拉取。

这仍然有些费力和手动,但我对此感到满意。

这是我的文件夹的当前内容~/dotfiles

~/dotfiles
|-- bash
|   |-- aliases
|   |-- config
|   |-- env
|   `-- promptcolors
|-- bash_profile
|-- bashrc
|-- gitconfig
|-- gvimrc
|-- hg-templates
|   |-- map-cmdline.dlog
|   |-- map-cmdline.nlog
|   |-- map-cmdline.sglog
|   `-- map-cmdline.slog
|-- hgrc
|-- ssh
|   `-- config
|-- vim
|   |-- after
|   |-- colemak-mappings.vim
|   |-- colors
|   |-- doc
|   |-- filetype.vim
|   |-- ftplugin
|   `-- plugin
`-- vimrc

我从伟大的 Peepcode 那里偷来了这个想法高级命令行屏幕录像(我认为价值 9 美元)。

这是我保存 GitHub 存储库的地方,以防您想查看。不要期待任何有趣的东西,我只是一个 bash/命令行新手。

http://github.com/sergio/dotfiles

答案2

对于所有仍在尝试寻找此问题的最佳解决方案的人来说,现在有一个非常积极维护的工具,可以满足您的所有需求,甚至更多:
https://github.com/lra/mackup

它的功能远远超出了同步 zsh 或 bash 配置文件。它可以同步大量工具的设置。本质上,它使用与已接受答案相同的符号链接概念,但可以自动化,因此您只需要两个命令:

  1. mackup backup
  2. mackup restore

答案3

有许多不同的工具可以实现这一目标

或者查看与点文件相关的所有内容的大列表http://dotfiles.github.io/

(全面披露:我是 Hermit 的原作者,并且仍然是主要维护者之一)

答案4

我觉得https://github.com/fsquillace/kyrat满足您的需要。

它是一个非常轻量级的 ssh 包装器,不需要 root 访问权限或对远程主机的任何安装。

一个简单的使用示例:

$> echo "alias q=exit" > ~/.config/kyrat/bashrc
$> kyrat [email protected]
myserver.com $> q
exit

相关内容