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