我是一個非常活躍的命令行用戶,我在各地都有shell帳戶。 MacBooks,Linux桌面機器,Linux服務器,XP上的Cygwin,你的名字。保持外殼配置跨多臺機器同步
如何使用所有平臺上可用的有限工具來保持我的shell配置(.bashrc
,.vimrc
等)跨所有這些機器同步?
我一直以相當有限的方式使用rsync
,涉及在需要時手動複製某些文件,但我想要一種標準方法來在所有機器上設置相同的基本shell環境。告訴我你的外殼賬戶管理策略。
我是一個非常活躍的命令行用戶,我在各地都有shell帳戶。 MacBooks,Linux桌面機器,Linux服務器,XP上的Cygwin,你的名字。保持外殼配置跨多臺機器同步
如何使用所有平臺上可用的有限工具來保持我的shell配置(.bashrc
,.vimrc
等)跨所有這些機器同步?
我一直以相當有限的方式使用rsync
,涉及在需要時手動複製某些文件,但我想要一種標準方法來在所有機器上設置相同的基本shell環境。告訴我你的外殼賬戶管理策略。
我有文件夾的Dropbox全球,每個操作系統和每臺機器外殼CONFIGS:
$ ls ~/Dropbox/shell/bash
bashbootstrap bashrc
bashrc-Darwin bashrc-Darwin-laptopname bashrc-Darwin-mininame
bashrc-Linux bashrc-Linux-machineone bashrc-Linux-machinetwo
bashrc
裝載每臺機器上,bashrc-Linux
,bashrc-Darwin
被裝載在各自的操作系統,和幾個CONFIGS特定到個人機器。 (順便說一下,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上像shell一樣工作。但是,正如他們所說,你的里程可能會有所不同。
我發表了關於here的博客文章。
如果您有權訪問源代碼管理,我只需檢查它們。這樣您就可以跨多臺機器同步它們,並且可以根據需要進行比較/回滾。如果您在工作時沒有CVS/SVN,則有免費選項。