Последствия для обмена .bashrc на машинах с Dropbox?

21

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

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

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

    
задан Alan Peabody 01.12.2010 в 03:34
источник

5 ответов

26

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

Вы можете либо просто переместить .bashrc в место в папке Dropbox, а затем символически привязать его к каждой из машин.

  mkdir -p ~/Dropbox/dotfiles
  mv ~/.bashrc ~/Dropbox/dotfiles/.bashrc
  ln -s ~/Dropbox/dotfiles/.bashrc ~/.bashrc

У меня на самом деле довольно много дотфайлов в моей домашней папке, которые на самом деле символические ссылки на общие папки в моей учетной записи Dropbox.

Другим вариантом является то, что вы можете создать файл внутри вашей папки с Dropbox, чтобы получить его .bashrc :

I.e., в вашем .bashrc , поставьте:

source $HOME/Dropbox/dotfiles/bashrc-shared-settings

, а затем создайте файл настроек bashrc-shared-settings, который вы хотите использовать на всех компьютерах, и вы можете сохранить отдельные файлы .bashrc .

(Вы также можете сократить source как %%_de% в bash.)

    
ответ дан frabjous 01.12.2010 в 04:32
источник
8

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

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

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

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

    
ответ дан andrewsomething 01.12.2010 в 04:37
5

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

Я сохраняю все эти файлы в dropbox, и у меня есть сценарий bash с именем 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
    
ответ дан Alaska 11.05.2011 в 05:52
2

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

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

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi
    
ответ дан Rolo 07.03.2011 в 11:03
1

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

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

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

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

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

    
ответ дан Nick Woodhams 16.01.2013 в 01:44