Dropbox ile makinelerin karşısında .bashrc için yankı var mı?

21

Çok sayıda farklı makinede çalışıyorum, hepsi Ubuntu (her zaman aynı sürümde değil). Tüm makinelerde bulunmasını istediğim istemde bazı temel özelleştirmeler var.

Şu anda Dropbox'ı kullanıyorum ve .vim / .vimrc .gitconfig .ackrc. Daha sonra onları Dropbox klasörümden ana klasörüme bağladım. Voilà, tüm makineler senkronize.

Bashrc'imle böyle bir şey yapmanın etkilerinin ne olduğundan emin değilim. Herhangi bir teklif önerebilir miyim? Belki bashrc ayrı bir dosya yüklemek için kolay bir yol?

    
sordu Alan Peabody 01.12.2010 03:34

5 cevap

26

Herhangi bir gerçek yansıma görmüyorum, ama sanırım oradaki neye bağlı olduğuna bağlı! Her yerde aynı yerde çalışan hızlı takma adlar ve kozmetik şeyler varsa, herhangi bir sorun görmüyorum.

.bashrc öğenizi Dropbox klasörünüzde bir yere taşıyabilir ve ardından her bir makinede sembolik bağlantı oluşturabilirsiniz.

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

Aslında, aslında benim Dropbox hesabımdaki paylaşımlı klasörlere ortak olan ev klasörümde birkaç nokta dosyası var.

Başka bir seçenek de, .bashrc 'siniz tarafından alınacak dropbox klasörünüzün içinde bir dosya oluşturabilmenizdir:

I.e., .bashrc değerinizde koyun:

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

ardından, tüm makinelerde kullanmak istediğiniz şeyler olan ve yine .bashrc dosyalarını ayrı tutabileceğiniz bir bashrc-shared-settings dosyası oluşturun.

(Ayrıca, source 'sini yalnızca . olarak kısalttabilirsiniz.

    
verilen cevap frabjous 01.12.2010 04:32
8

Düşünebildiğim ana risk, senkronizasyonun yedekleme ile aynı olmadığını hatırlamanız gerektiğidir. Herhangi bir hata, tüm makinelerinizle senkronize edilecek.

% co_de dosyanıza ayrı bir dosya eklemek için% böyle bir şey ekleyin:

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

~ / .foo'nun ayrı dosya olduğu yer.

    
verilen cevap andrewsomething 01.12.2010 04:37
5

Genellikle, yapılandırma dosyalarını merkezileştirmek iyi bir şeydir! Belirli bir işletim sistemi veya ana makine adına göre neyin çalışır durumda olduğunu özelleştirmek isterseniz, .bashrc dosyanıza aşağıdaki gibi bir şey yapabilirsiniz:

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

Ardından, .bash dizinini ve bunun altındaki os ve ana bilgisayar dizinlerini oluşturun ve adlı dosyalara özel ayarlar koyun. & lt; her ne ise & gt; .sh Burada & lt; ne olursa olsun & gt; , özelleştirileceği os türü veya ana bilgisayardır.

Tüm bu dosyaları dropbox'ta saklıyorum ve Dropbox klasöründe link_dropbox adlı bir bash komut dosyası var ve bu da onları bağlantılandırmamı kolaylaştırıyor:

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

.bashrc’imi Dropbox’ta çok sayıda başka yapılandırma dosyasıyla (.gitconfig, .vimrc, vb.) birlikte saklıyorum.

Makineyi bağımsız tutmak isteyebileceğim diğer ayarlar için .bashrc_local adlı bir dosyaya kaynaklık ediyorum.

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

Dropbox ile senkronize etmek harikadır, ancak Dropbox'ı sunucuya kurmak istemiyorsanız, yöntemimi uygulayabilirsiniz.

  1. Dropbox klasörünüzde paylaşılan bash ayarlarınızla bir dosya oluşturun.

  2. Dosyaya sağ tıklayın ve Dropbox menüsünden "Share Link" e tıklayın.

  3. Ardından, "Bağlantıyı Al" ı tıklayın. Bu paylaşılan bağlantıyı panoya kopyalar.

  4. Paylaşılan dosyanın sonuna ekle? dl = 1. Bu ham dosyayı almanızı sağlar. Paylaşılan bağlantınız artık bana benzer görünmelidir: İşte

  5. Bu satırı ~ / .bashrc’ye ekle

    source $HOME/.bash_shared_settings

  6. Bu komutu kullanarak tercih ettiğiniz aralıklarla bir cronjob oluşturun (Dropbox Shared File ile değiştirin!)

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

Bu, ~ / .bash_shared_settings kopyanızı her yarım saatte bir güncelleyecektir. Seansınızı her yeniden yüklediğinizde, en son değişiklikleri dahil edersiniz.

    
verilen cevap Nick Woodhams 16.01.2013 01:44

Etiketlerdeki diğer soruları oku