Синхронизация конфигураций оболочки на нескольких компьютерах
Я довольно активный пользователь командной строки и я аккаунтам повсюду. 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, как оболочки. Но, как говорится, ваш пробег может варьироваться.
Я в блоге об этом здесь.
Если у вас есть доступ к управлению версиями, я бы просто проверил их. Таким образом, вы можете синхронизировать их на нескольких машинах, и при необходимости вы можете сравнить/откат. Если у вас нет CVS/SVN на работе, доступны бесплатные опции.