Синхронизация конфигураций оболочки на нескольких машинах - PullRequest
10 голосов
/ 20 октября 2008

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

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

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

Ответы [ 3 ]

14 голосов
/ 29 июля 2011

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

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

Я сделал сообщение в блоге об этом здесь .

2 голосов
/ 20 октября 2008

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

0 голосов
/ 20 октября 2008

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

...