Последствия совместного использования .bashrc на компьютерах с Dropbox?

Я работаю на множестве разных машин, на всех работает Ubuntu (не всегда одна и та же версия). У меня есть несколько действительно базовых настроек, которые я хотел бы иметь на всех машинах.

В настоящее время я использую Dropbox и храню там все остальные мои «точечные файлы», например, мой .vim / .vimrc .gitconfig .ackrc. Затем я просто связываю их с моей домашней папкой из папки Dropbox. Вуаля, все машины синхронизированы.

Я не уверен, каковы последствия того, чтобы делать что-то подобное с моим bashrc. Может ли кто-нибудь предложить предложения? Может быть, простой способ загрузить отдельный файл в bashrc?

22
задан 7 March 2011 в 16:38

5 ответов

Я не вижу никаких реальных последствий, но я полагаю, это зависит от того, что у вас там! Если это просто быстрые псевдонимы, которые работают везде одинаково, и косметические вещи, я не вижу никаких проблем.

Вы можете просто переместить .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.)

0
ответ дан 7 March 2011 в 16:38

Обычно, централизация конфигурационных файлов является хорошей вещью! Если Вы хотите настроить, какие выполнения, базирующиеся прочь данной ОС или имени хоста, можно сделать что-то как следующее в .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
6
ответ дан 7 March 2011 в 16:38

Главный риск, о котором я могу думать, заключается в том, что вы должны помнить, что синхронизация - это не то же самое, что резервное копирование. Любые ошибки будут синхронизированы со всеми вашими машинами.

Чтобы включить отдельный файл в ваш ~/.bashrc, добавьте что-то вроде этого:

if [ -f ~/.foo ]; then
    . ~/.foo
fi

Где ~ / .foo - отдельный файл.

0
ответ дан 7 March 2011 в 16:38

Я храню символическую ссылку .bashrc в Dropbox вместе со множеством других файлов конфигурации (.gitconfig, .vimrc и т. Д.).

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

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi
0
ответ дан 7 March 2011 в 16:38

Синхронизация с Dropbox - это прекрасно, но если вы не хотите устанавливать Dropbox на сервере, вы можете реализовать мой метод.

  1. Создайте файл с настройками вашего общего bash в папке Dropbox.

  2. Щелкните правой кнопкой мыши файл и выберите «Поделиться ссылкой» в меню Dropbox.

  3. Затем нажмите «Получить ссылку». Это скопирует общую ссылку в ваш буфер обмена.

  4. Добавьте? Dl = 1 в конец общего файла. Это позволяет вам получить необработанный файл. Ваша общая ссылка теперь должна выглядеть аналогично моей: https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1

  5. Добавить эта строка в ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Создайте 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 каждые полчаса. Каждый раз, когда вы перезагружаете свою сессию, вы будете включать последние изменения.

0
ответ дан 7 March 2011 в 16:38

Другие вопросы по тегам:

Похожие вопросы: