Я думаю, что вы хотите, может быть похоже на то, что я делал ...
Создайте в доме каталог с именем .host_configs/
. Это версия с контролем. Или, в моем случае, он находится в специальной папке на центральном компьютере, я нахожу его на любой новой машине. Внутри него создайте папку для каждого хоста, для которого вы хотите разные конфигурации. Папка для каждого хоста должна быть названа в честь короткого имени хоста для этого компьютера. Итак, в вашем git-репо у вас есть:
.host_configs/
homecomp1/
girlfriendcomp1/
workcomp1/
workcomp2/
В каждой папке конкретного хоста поместите файлы конфигурации .vimrc, .irbrc и т. Д. Для этого конкретного блока.
А также, в каждой папке хоста сделать файл с именем .[SHORT_HOST]_rc
. Например, если ваша машина с именем "sane" имеет файл с именем .sane_rc ... Этот файл будет содержать строки, которые обычно находятся в .bashrc и являются уникальными для этого хоста. Например, если это Mac и ему нужно alias ls='ls -GF'
вместо alias ls='ls --color=auto'
, которое работает на большинстве машин nix для ls
с цветами, поместите эту строку в .[SHORT_HOST]_rc
для этой машины вместе со всеми специальными функциями, объявлениями и т. д., которые обычно идут в .bashrc или .profile и т. д. (или .zshrc, .tschrc, в зависимости от обстоятельств). Таким образом, контролируемая версия ~/.host_configs/
папка выглядит так:
.host_configs/
homecomp1/
.homecomp1_rc #special shell configs for this hostname
.vimrc #you know the rest
.irbrc
.Xresources
girlfriendcomp1/
.girlfriendcomp1_rc
.vimrc
.bubblebathrc
workcomp1/
.workcomp1_rc
.bashrc
.vimrc
workcomp2/
.workcomp2_rc
.bashrc
.vimrc
Я использую все одинаковые barebone-файлы $ HOME / .bashrc (или ~ / .tshrc и т. Д.) На всех своих машинах. Я просто беру базовый, поставляемый с данным дистрибутивом, и перемещаю всю специфичную для хоста конфигурацию в файл .host-configs/[SHORT_HOST]/.[SHORT_HOST]_rc
.
Поместите это внизу (из $HOME/.bashrc
):
export SHORT_HOST="sane"
for file in `find ~/.host_configs/$SHORT_HOST -name ".*"`
do
ln -s $file `basename $file`
done
source ~/`.$SHORT_HOST`_rc
(Находит все точечные файлы для хоста и создает символическую ссылку в домашней папке ~/.host_configs/foo_host
).
Ваши точечные файлы находятся в их обычном местоположении, но они символически связаны с контролем версий. Вышеприведенное также добавляет все строки в вашем файле [$SHORT_HOST]_rc
в .bashrc
Вы можете фиксировать обратно в git из папки ~/.host_configs/
, когда у вас есть изменения.
Вот как это выглядит в оболочке, что, вероятно, все, что вам нужно, но если вам нужны другие функции, я бы написал что-то, использующее те же принципы (извлечение внешнего файла .rc в .bashrc и символическая ссылка на все файлы конфигурации в папку структурированного управления версиями) в более универсальной / менее уродливой оболочке. Таким образом, вместо вышеупомянутого в вашем .bashrc может быть:
export SHORT_HOST="sane"
ruby ~/import_conf.rb $SHORT_HOST
... и напишите свой import_conf.rb для более сложного управления настройками, например, для размещения определенного файла конфигурации в каком-либо каталоге, кроме home, или для обработки папки конфигурации, такой как .ssh /, .subversion / и т.д. Это то, что я делаю Это довольно элегантно для меня, но могут быть и лучшие решения. Dropbox с некоторыми креативными символическими ссылками также является отличной идеей, хотя вы полагаетесь на третьих лиц и должны быть в графической среде. Также обратите внимание, что существуют несоответствия между тем, что вы можете сделать с символическими ссылками + dropbox в Linux и ярлыками + dropbox в Windows, если вы реализуете что-то, что хочет играть с Windows.