Powtarzające się udostępnianie .bashrc na komputerach z Dropbox?

21

Pracuję na wielu różnych komputerach, wszystkie z systemem Ubuntu (nie zawsze w tej samej wersji). Mam kilka naprawdę podstawowych dostosowań do mojej zachęty, które chciałbym mieć na wszystkich maszynach.

Obecnie korzystam z Dropbox i przechowuję tam wszystkie moje "pliki dot", takie jak mój .vim / .vimrc .gitconfig .ackrc. Następnie po prostu łączę je z moim folderem domowym z mojego folderu Dropbox. Voila, wszystkie urządzenia zsynchronizowane.

Nie jestem pewien, co to jest reperkusje związane z robieniem czegoś takiego z moim bashrc. Czy ktoś może zaoferować sugestie? Może prosty sposób na załadowanie oddzielnego pliku w bashrc?

    
zadawane Alan Peabody 01.12.2010, 03:34
źródło

5 odpowiedzi

26

Nie widzę żadnych reperkusji, ale myślę, że to zależy od tego, co tam masz! Jeśli to tylko szybkie aliasy, które działają wszędzie tak samo i kosmetyczne, nie widzę żadnych problemów.

Możesz po prostu przenieść swój .bashrc do jakiegoś miejsca w folderze Dropbox, a następnie dowiązać symbolicznie na każdym z komputerów.

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

W moim katalogu domowym mam sporo plików z kropkami, które są dowiązaniami symbolicznymi do folderów współdzielonych na moim koncie Dropbox.

Inną opcją jest możliwość utworzenia pliku w folderze dropbox, który będzie pochodził z .bashrc :

I.e. w twoim .bashrc , put:

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

, a następnie utwórz plik ustawień współużytkowanych w bashrc, który jest materiałem, który chcesz użyć na wszystkich komputerach, i nadal możesz zachować oddzielne pliki .bashrc .

(Możesz także skrócić source jako tylko . w bashu.)

    
odpowiedział frabjous 01.12.2010, 04:32
źródło
8

Głównym ryzykiem, które mogę sobie wyobrazić, jest to, że musisz pamiętać, że synchronizacja to nie to samo, co tworzenie kopii zapasowej. Wszelkie błędy będą zsynchronizowane ze wszystkimi Twoimi maszynami.

Aby dołączyć osobny plik do ~/.bashrc , dodaj coś takiego:

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

Gdzie ~ / .foo jest oddzielnym plikiem.

    
odpowiedział andrewsomething 01.12.2010, 04:37
źródło
5

Zazwyczaj centralizowanie plików konfiguracyjnych jest dobrą rzeczą! Jeśli chcesz dostosować to, co działa w oparciu o dany system operacyjny lub nazwę hosta, możesz zrobić coś takiego w pliku .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

Następnie utwórz katalog .bash i os i hosta pod tymi ustawieniami i umieść dowolne niestandardowe ustawienia w plikach o nazwie < cokolwiek > .sh gdzie & quot; cokolwiek > to typ os lub host, który chcesz dostosować.

Wszystkie te pliki przechowuję w skrzynce odbiorczej, a mam skrypt bash o nazwie link_dropbox w folderze Dropbox, który ułatwia mi powiązanie ich w:

#!/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
    
odpowiedział Alaska 11.05.2011, 05:52
źródło
2

Moje pliki .bashrc są dowiązane w Dropbox razem z wieloma innymi plikami konfiguracyjnymi (.gitconfig, .vimrc, itp.).

Na koniec uzyskuję plik o nazwie .bashrc_local dla innych ustawień, które mogą być niezależne od maszyny.

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi
    
odpowiedział Rolo 07.03.2011, 11:03
źródło
1

Synchronizacja z Dropbox jest świetna, ale jeśli nie chcesz instalować Dropbox na serwerze, możesz wdrożyć moją metodę.

  1. Utwórz plik ze swoimi wspólnymi ustawieniami bash w folderze Dropbox.

  2. Kliknij plik prawym przyciskiem myszy i kliknij "Udostępnij link" z menu Dropbox.

  3. Następnie kliknij "Pobierz link". Spowoduje to skopiowanie udostępnionego linku do schowka.

  4. Dodaj? dl = 1 na końcu udostępnionego pliku. Pozwala to uzyskać nieprzetworzony plik. Twój udostępniony link powinien teraz wyglądać podobnie do mojego: link

  5. Dodaj tę linię do ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Utwórz cronjob z preferowanym interwałem, używając tego polecenia (Zamień na udostępniony plik Dropbox!)

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

To będzie aktualizować twoją kopię ~ / .bash_shared_settings co pół godziny. Za każdym razem, gdy ponownie załadujesz sesję, uwzględnisz najnowsze zmiany.

    
odpowiedział Nick Woodhams 16.01.2013, 01:44
źródło

Przeczytaj inne pytania na temat tagów