Repercussões ao compartilhamento de .bashrc em máquinas com o Dropbox?

21

Eu trabalho em várias máquinas diferentes, todas executando Ubuntu (nem sempre a mesma versão). Eu tenho algumas personalizações muito básicas para o meu prompt eu gostaria de ter disponível em todas as máquinas.

Atualmente, uso o Dropbox e armazeno todos os outros "arquivos de ponto", como o meu .vim / .vimrc .gitconfig .ackrc. Eu, então, apenas os vinculo à minha pasta pessoal a partir da minha pasta do Dropbox. Voilà, todas as máquinas em sincronia.

Não tenho certeza de quais são as repercussões de fazer algo assim com o meu bashrc. Alguém pode oferecer sugestões? Talvez uma maneira fácil de carregar um arquivo separado no bashrc?

    
por Alan Peabody 01.12.2010 / 03:34

5 respostas

26

Eu não vejo nenhuma repercussão real, mas suponho que depende do que você tem lá! Se forem apenas aliases rápidos que funcionam da mesma maneira em todos os lugares e coisas estéticas, não vejo nenhum problema.

Você pode simplesmente mover seu .bashrc para algum lugar na sua pasta do Dropbox e depois ligá-lo em cada uma das máquinas.

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

Na verdade, tenho alguns dotfiles na minha pasta pessoal, que na verdade são links simbólicos para pastas compartilhadas na minha conta do Dropbox.

Outra opção é que você pode criar um arquivo dentro de sua pasta dropbox para ser originado por seu .bashrc :

Ou seja, no seu .bashrc , coloque:

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

e, em seguida, crie um arquivo bashrc-shared-settings, que é o material que você deseja usar em todas as máquinas, e você ainda pode manter arquivos .bashrc separados.

(Você também pode abreviar source como apenas . no bash.)

    
por frabjous 01.12.2010 / 04:32
8

O principal risco que posso pensar é que você deve lembrar que a sincronização não é o mesmo que fazer o backup. Qualquer erro será sincronizado com todas as suas máquinas.

Para incluir um arquivo separado em seu ~/.bashrc , adicione algo assim:

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

Onde ~ / .foo é o arquivo separado.

    
por andrewsomething 01.12.2010 / 04:37
5

Geralmente, centralizar os arquivos de configuração é uma coisa boa! Se você quiser personalizar o que é executado com base em um determinado sistema operacional ou nome de host, você pode fazer algo como o seguinte em seu .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

Em seguida, crie um diretório .bash e os diretórios os e host e coloque as configurações personalizadas em arquivos chamados < o que quer que seja > .sh onde < seja o que for > é o tipo de SO ou o host que você deseja personalizar.

Eu mantenho todos esses arquivos na caixa de depósito e tenho um script bash chamado link_dropbox na minha pasta do Dropbox que me ajuda a facilitar sua vinculação:

#!/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
    
por Alaska 11.05.2011 / 05:52
2

Eu mantenho o meu .bashrc linkado no Dropbox junto com muitos outros arquivos de configuração (.gitconfig, .vimrc, etc).

Eu fonte um arquivo chamado .bashrc_local no final para outras configurações que eu possa querer manter independente da máquina.

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi
    
por Rolo 07.03.2011 / 11:03
1

A sincronização com o Dropbox é ótima, mas se você não quiser instalar o Dropbox no servidor, poderá implementar o meu método.

  1. Crie um arquivo com suas configurações bash compartilhadas na sua pasta do Dropbox.

  2. Clique com o botão direito no arquivo e clique em "Compartilhar link" no menu do Dropbox.

  3. Em seguida, clique em "Obter link". Isso copiará o link compartilhado para sua área de transferência.

  4. Adicione? dl = 1 ao final do arquivo compartilhado. Isso permite que você obtenha o arquivo bruto. Seu link compartilhado agora deve ser semelhante ao meu: link

  5. Adicione esta linha a ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Crie um cronjob com seu intervalo preferido usando este comando (Substitua por seu arquivo compartilhado do Dropbox!)

    */30 * * * * curl -sS https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1 > ~/.bash_shared_settings; chmod +x ~/.bash_shared_settings;

Isso atualizará sua cópia de ~ / .bash_shared_settings a cada meia hora. Toda vez que você recarregar sua sessão, você incluirá as últimas alterações.

    
por Nick Woodhams 16.01.2013 / 01:44

Tags