Синхронизация конфигураций оболочки на нескольких компьютерах

Я довольно активный пользователь командной строки и я аккаунтам повсюду. MacBooks, настольные машины Linux, серверы Linux, Cygwin на XP, вы называете это.

как я могу сохранить конфигурацию оболочки (.bashrc, .vimrc etc.) синхронизировать все эти машины с помощью ограниченных инструментов, доступных на всех платформах?

Я использую rsync довольно ограниченным способом, который включает в себя ручное копирование некоторых файлов, когда они мне нужны, но я хочу стандартный способ настройки одной и той же базовой среды оболочки на всех моих машинах. Расскажите мне вашу стратегию управления аккаунтом shell.

3 ответов


у меня есть папка на Dropbox с глобальными, per OS и конфигурациями оболочки компьютера:

$ 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 загружаются на их соответствующих ОС, и несколько конфигураций специфичны для отдельных машин. (Кстати, Дарвин-это имя BSD-подобного ядра OS X.)

что связывает все это вместе-это . Он загружает каждый применимый файл конфигурации в порядке увеличения специфичности, это позволяет per OS и per машина переопределяет, чтобы иметь более высокий приоритет. Кроме того, мы молча пропускаем отсутствующие файлы конфигурации; вам не нужно создавать пустые файлы конфигурации для каждой из ваших машин, чтобы сценарий был доволен.

на новой машине, после установки Dropbox на ~/Dropbox, Я удаляю значение по умолчанию .bashrc и просто символическая ссылка на файл начальной загрузки на его месте:

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

О, И вот содержимое :

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, как оболочки. Но, как говорится, ваш пробег может варьироваться.

Я в блоге об этом здесь.


Я использовал контроль версий для этого в прошлом (svn, ртутный, etc...). Вы можете настроить свой собственный сервер или использовать размещенный. в Dropbox тоже работает.


Если у вас есть доступ к управлению версиями, я бы просто проверил их. Таким образом, вы можете синхронизировать их на нескольких машинах, и при необходимости вы можете сравнить/откат. Если у вас нет CVS/SVN на работе, доступны бесплатные опции.