Я работаю на множестве разных машин, на всех работает Ubuntu (не всегда одна и та же версия). У меня есть несколько действительно базовых настроек, которые я хотел бы иметь на всех машинах.
В настоящее время я использую Dropbox и храню там все остальные мои «точечные файлы», например, мой .vim / .vimrc .gitconfig .ackrc. Затем я просто связываю их с моей домашней папкой из папки Dropbox. Вуаля, все машины синхронизированы.
Я не уверен, каковы последствия того, чтобы делать что-то подобное с моим bashrc. Может ли кто-нибудь предложить предложения? Может быть, простой способ загрузить отдельный файл в bashrc?
Я не вижу никаких реальных последствий, но я полагаю, это зависит от того, что у вас там! Если это просто быстрые псевдонимы, которые работают везде одинаково, и косметические вещи, я не вижу никаких проблем.
Вы можете просто переместить .bashrc
в какое-нибудь место в папке Dropbox и затем создать символическую ссылку на каждую из машин.
mkdir -p ~/Dropbox/dotfiles
mv ~/.bashrc ~/Dropbox/dotfiles/.bashrc
ln -s ~/Dropbox/dotfiles/.bashrc ~/.bashrc
На самом деле у меня есть довольно много файлов точек в моей домашней папке, которые на самом деле являются символическими ссылками на общие папки в моей учетной записи Dropbox.
Другой вариант заключается в том, что вы можете создать файл внутри папки Dropbox для получения источника .bashrc
:
То есть в вашем .bashrc
положить:
source $HOME/Dropbox/dotfiles/bashrc-shared-settings
, а затем создайте файл bashrc-shared-settings, который вы хотите использовать на всех машинах, и вы все равно можете хранить отдельные .bashrc
файлы.
(Вы можете также сократить source
как просто .
в bash.)
Обычно, централизация конфигурационных файлов является хорошей вещью! Если Вы хотите настроить, какие выполнения, базирующиеся прочь данной ОС или имени хоста, можно сделать что-то как следующее в .bashrc:
export HOSTNAME=`hostname | cut -f1 -d'.'`
if [ -f ~/.bash/os/$OSTYPE.sh ]; then
source ~/.bash/os/$OSTYPE.sh
fi
if [ -f ~/.bash/host/$HOSTNAME.sh ]; then
source ~/.bash/host/$HOSTNAME.sh
fi
Затем создайте .bash каталог и OS и разместите каталоги под этим и поместите любые пользовательские настройки в файлы, названные <безотносительно> .sh где независимо от того, <что> тип OS или хост, который Вы хотите настроенный.
Я сохраняю все эти файлы в Dropbox, и у меня есть сценарий удара, названный link_dropbox в моей папке Dropbox, которая помогает мне упростить соединение их в:
#!/bin/bash
#Array of <source><space><link> target->symlink mappings
linkarray=( "~/Dropbox/config/bashrc ~/.bashrc"
"~/Dropbox/config/bash ~/.bash"
"~/Dropbox/config/vimrc ~/.vimrc"
"~/Dropbox/config/vim ~/.vim"
"~/Dropbox/config/ssh ~/.ssh"
"~/Dropbox/config/screenrc ~/.screenrc"
"~/Dropbox/bin ~/bin" )
#turn off globbing to split each entry on spaces
set -f
for entry in "${linkarray[@]}"
do
targets=( $entry )
#eval will expand the tildes
eval from=${targets[0]}
eval to=${targets[1]}
#if the target exists and is not a symlink, err on the side of caution
if [ -e "$to" -a ! -L "$to" ]
then
echo "$to exists and is not a link, skipping..."
else
#probably safe to delete an existing symlink
if [ -e "$to" ]
then
rm $to
fi
ln -s $from $to
fi
done
Главный риск, о котором я могу думать, заключается в том, что вы должны помнить, что синхронизация - это не то же самое, что резервное копирование. Любые ошибки будут синхронизированы со всеми вашими машинами.
Чтобы включить отдельный файл в ваш ~/.bashrc
, добавьте что-то вроде этого:
if [ -f ~/.foo ]; then
. ~/.foo
fi
Где ~ / .foo - отдельный файл.
Я храню символическую ссылку .bashrc в Dropbox вместе со множеством других файлов конфигурации (.gitconfig, .vimrc и т. Д.).
Я поставил файл с именем .bashrc_local в конце его для других настроек, которые я мог бы пожелать сохранить независимыми от машины.
if [ -f ~/.bashrc_local ]; then
. ~/.bashrc_local
fi
Синхронизация с Dropbox - это прекрасно, но если вы не хотите устанавливать Dropbox на сервере, вы можете реализовать мой метод.
Создайте файл с настройками вашего общего bash в папке Dropbox.
Щелкните правой кнопкой мыши файл и выберите «Поделиться ссылкой» в меню Dropbox.
Затем нажмите «Получить ссылку». Это скопирует общую ссылку в ваш буфер обмена.
Добавьте? Dl = 1 в конец общего файла. Это позволяет вам получить необработанный файл. Ваша общая ссылка теперь должна выглядеть аналогично моей: https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1
Добавить эта строка в ~ / .bashrc
source $HOME/.bash_shared_settings
Создайте cronjob с вашим предпочтительным интервалом, используя эту команду (Замените на ваш общий файл Dropbox!)
*/30 * * * * curl -sS https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1 > ~/.bash_shared_settings; chmod +x ~/.bash_shared_settings;
Это будет обновлять вашу копию ~ / .bash_shared_settings каждые полчаса. Каждый раз, когда вы перезагружаете свою сессию, вы будете включать последние изменения.