在多台计算机上保持shell配置同步

时间:2008-10-20 12:30:19

标签: shell synchronization development-environment dotfiles

我是一个非常活跃的命令行用户,我到处都有shell帐户。 MacBooks,Linux桌面计算机,Linux服务器,XP上的Cygwin,你可以命名。

如何使用所有平台上提供的有限工具,在所有这些计算机上保持我的shell配置(.bashrc.vimrc等)同步?

我一直在以非常有限的方式使用rsync,涉及在需要时手动复制一些文件,但我想要一种标准方法来在我的所有机器上设置相同的基本shell环境。告诉我你的shell账户管理策略。

3 个答案:

答案 0 :(得分:14)

我在Dropbox上有全局,每个操作系统和每个机器外壳配置文件夹:

$ ls ~/Dropbox/shell/bash
bashbootstrap  bashrc
bashrc-Darwin  bashrc-Darwin-laptopname  bashrc-Darwin-mininame
bashrc-Linux  bashrc-Linux-machineone  bashrc-Linux-machinetwo

bashrc加载到每台计算机上,bashrc-Linuxbashrc-Darwin加载到各自的操作系统上,并且几个配置特定于各个计算机。 (顺便说一句,Darwin是OS X的BSD类内核的名称。)

bashbootstrap文件放在一起的是什么。它按照增加的特性加载每个适用的配置文件,这允许每个操作系统和每个机器覆盖具有更高的优先级。另外,我们默默地跳过丢失的配置文件;您不需要为每台机器创建空配置文件,以保持脚本的快乐。

在新计算机上,在~/Dropbox上安装Dropbox后,我移开了默认的.bashrc,只是将引导程序文件符号链接到其位置:

$ mv ~/.bashrc ~/.bashrc.bak
$ ln -s ~/Dropbox/shell/bash/bashbootstrap  ~/.bashrc

哦,这是bashbootstrap文件的内容:

if [ -z "$PS1" ]; then
   return
fi

dropboxshelldir=~/Dropbox/shell
dropboxdir=$dropboxshelldir/bash
masterbashrc=$dropboxdir/bashrc
osbashrc=$masterbashrc-`uname`
localbashrc=$osbashrc-`hostname | cut -d. -f1`

echo -n "Applicable shell configs: "
for bashfile in "$masterbashrc" "$osbashrc" "$localbashrc"; do
  if [ -r $bashfile ]; then
    . $bashfile
    echo -n "`basename $bashfile` "
  fi
done
echo

# Set convenience aliases
myed=${VISUAL:-${EDITOR:-vim}}
alias editbashrc="$myed $masterbashrc"
alias editosbashrc="$myed $osbashrc"
alias editlocalbashrc="$myed $localbashrc"

最后需要注意的是,此脚本还提供了三个便利别名,用于编辑Bash配置文件,而无需记住它们的存储位置。

  • editbashrc编辑全局配置文件。
  • editosbashrc编辑特定于操作系统的配置文件。
  • editlocalbashrc编辑计算机专用配置文件。

我只在Bash上测试了这个,但它可以在其他Bash上运行。但是,正如他们所说,你的里程可能会有所不同。

我发了一篇关于此here的博文。

答案 1 :(得分:2)

我过去曾使用版本控制(svnmercurial等等)。您可以设置自己的服务器,也可以使用托管服务器。 Dropbox也有效。

答案 2 :(得分:0)

如果您有权访问源代码管理,我只需要检查它们。这样您就可以在多台计算机上同步它们,并且可以根据需要进行比较/回滚。如果您没有CVS / SVN,可以使用免费选项。