Ci sono ripercussioni sulla condivisione di .bashrc su macchine con Dropbox?

21

Lavoro su molte macchine diverse, tutte con Ubuntu (non sempre la stessa versione). Ho alcune personalizzazioni davvero basilari per il mio prompt che vorrei avere a disposizione su tutte le macchine.

Attualmente utilizzo Dropbox e memorizzo tutti i miei altri "dot file", come ad esempio il mio .vim / .vimrc .gitconfig .ackrc. Poi li collego alla mia cartella home dalla mia cartella Dropbox. Voilà, tutte le macchine sincronizzate.

Non sono sicuro di quali siano le ripercussioni di una cosa del genere con la mia bascrc. Qualcuno può offrire suggerimenti? Forse un modo semplice per caricare un file separato nel bashrc?

    
posta Alan Peabody 01.12.2010 - 03:34
fonte

5 risposte

26

Non vedo alcuna ripercussione reale, ma suppongo che dipenda da ciò che hai lì dentro! Se si tratta solo di alias veloci che funzionano allo stesso modo ovunque e di elementi estetici, non vedo alcun problema.

Potresti semplicemente spostare .bashrc in qualche posto nella tua cartella Dropbox e quindi linkarlo simbolicamente su ciascuna macchina.

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

In realtà ho un bel po 'di dotfiles nella mia cartella home che sono in realtà collegamenti simbolici alle cartelle condivise nel mio account Dropbox.

Un'altra opzione è che puoi creare un file all'interno della cartella della tua casella personale per essere estratto da .bashrc :

I.e., nel tuo .bashrc , inserisci:

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

e quindi crea un file di impostazioni condivise bashrc, che è quello che vuoi usare su tutte le macchine, e puoi comunque tenere separati i file .bashrc .

(Puoi anche abbreviare source come solo . in bash.)

    
risposta data frabjous 01.12.2010 - 04:32
fonte
8

Il rischio principale che posso pensare è che devi ricordare che la sincronizzazione non è la stessa cosa del backup. Qualsiasi errore verrà sincronizzato con tutte le tue macchine.

Per includere un file separato nel tuo ~/.bashrc aggiungi qualcosa del tipo:

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

Dove ~ / .foo è il file separato.

    
risposta data andrewsomething 01.12.2010 - 04:37
fonte
5

Di solito, centralizzare i file di configurazione è una buona cosa! Se si desidera personalizzare ciò che viene eseguito in base a un determinato sistema operativo o nome host, è possibile eseguire le seguenti operazioni nel file .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

Quindi, crea una directory .bash e le os e host sotto a quella e aggiungi eventuali impostazioni personalizzate nei file chiamati & lt; whatever & gt; .sh dove & lt; quale & gt; è il tipo di os o l'host che desideri personalizzare.

Conservo tutti questi file in dropbox e ho uno script di bash chiamato link_dropbox nella mia cartella Dropbox che mi aiuta a facilitare il loro collegamento in:

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

Conservo il mio .bashrc collegato in collegamento simbolico in Dropbox insieme a molti altri file di configurazione (.gitconfig, .vimrc, ecc.)

Sorgo un file chiamato .bashrc_local alla fine di esso per altre impostazioni che potrei voler mantenere indipendenti dalla macchina.

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

La sincronizzazione con Dropbox è ottima, ma se non vuoi installare Dropbox sul server, puoi implementare il mio metodo.

  1. Crea un file con le impostazioni di bash condivise nella cartella Dropbox.

  2. Fai clic con il pulsante destro sul file e fai clic su "Condividi link" dal menu Dropbox.

  3. Quindi fai clic su "Ottieni collegamento". Questo copierà il link condiviso negli Appunti.

  4. Aggiungi? dl = 1 alla fine del file condiviso. Questo ti permette di ottenere il file raw. Il tuo link condiviso ora dovrebbe essere simile al mio: link

  5. Aggiungi questa linea a ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Crea un cronjob con il tuo intervallo preferito usando questo comando (Sostituisci con il tuo file condiviso Dropbox!)

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

Questo aggiornerà la tua copia di ~ / .bash_shared_settings ogni mezz'ora. Ogni volta che ricarichi la sessione, includi le ultime modifiche.

    
risposta data Nick Woodhams 16.01.2013 - 01:44
fonte

Leggi altre domande sui tag