Skutki udostępniania .bashrc na różnych komputerach za pomocą Dropbox?

22

Pracuję na wielu różnych komputerach, wszystkie z systemem Ubuntu (nie zawsze ta sama wersja). Mam kilka naprawdę podstawowych dostosowań do mojego monitu, który chciałbym mieć dostępny na wszystkich komputerach.

Obecnie używam Dropbox i przechowuję tam wszystkie moje „pliki kropek”, takie jak moje .vim / .vimrc .gitconfig .ackrc. Następnie łączę je z moim folderem domowym z folderu Dropbox. Voilà, wszystkie maszyny zsynchronizowane.

Nie jestem pewien, jakie są konsekwencje zrobienia czegoś takiego z moim bashrc. Czy ktoś może zaoferować sugestie? Może to prosty sposób na załadowanie osobnego pliku w bashrc?

Alan Peabody
źródło

Odpowiedzi:

28

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

Możesz albo przenieść swoje urządzenie w dowolne miejsce .bashrcw folderze Dropbox, a następnie utworzyć dowiązanie symboliczne na każdym komputerze.

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

Mam właściwie kilka plików dot w moim katalogu domowym, które w rzeczywistości są dowiązaniami symbolicznymi do folderów współdzielonych na moim koncie Dropbox.

Inną opcją jest to, że możesz utworzyć plik w folderze Dropbox, który będzie pochodzić z twojego .bashrc :

To znaczy, w swoim .bashrc:

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

a następnie utwórz plik ustawień bashrc-shared-settings, który jest tym, czego chcesz używać na wszystkich komputerach, i nadal możesz zachować osobne .bashrc pliki.

(Możesz również skracać sourcejako tylko .bash.)

frabjous
źródło
Mam skonfigurowane inne pliki kropek zgodnie z twoim przykładem, po prostu nie jestem tak obeznany z bash i nie byłem pewien, jak „specjalne” są wszystkie domyślne rzeczy Ubuntu. Zamierzam użyć metody źródłowej, którą zasugerowałeś. Dziękuję Ci!
Alan Peabody,
8

Główne ryzyko, o którym mogę myśleć, to to, że musisz pamiętać, że synchronizacja to nie to samo, co tworzenie kopii zapasowych. Wszelkie błędy zostaną zsynchronizowane z wszystkimi twoimi maszynami.

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

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

Gdzie ~ / .foo to osobny plik.

andrews coś
źródło
1
Masz rację! Ale na szczęście dropbox przechowuje poprawki twoich plików, więc kopie zapasowe są tworzone automatycznie :)
Alex
Dzięki za świetną sugestię, będę ręcznie pozyskiwał drugi plik i prawdopodobnie użyję tej składni.
Alan Peabody,
6

Zwykle centralizacja plików konfiguracyjnych to dobra rzecz! Jeśli chcesz dostosować to, co działa na podstawie danego systemu operacyjnego lub nazwy hosta, możesz zrobić coś takiego w swoim 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 .bash katalog i os i hostów katalogów pod tą i umieścić wszelkie niestandardowe ustawienia w plikach zwanych <cokolwiek> SH gdzie <cokolwiek> jest typem os lub host chcesz dostosować.

Trzymam wszystkie te pliki w Dropbox i mam skrypt bash o nazwie link_dropbox w moim folderze Dropbox, który pomaga mi w łączeniu 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
Alaska
źródło
2

Trzymam mój .bashrc symlinkowany w Dropbox wraz z wieloma innymi plikami konfiguracyjnymi (.gitconfig, .vimrc itp.).

Na końcu plik źródłowy o nazwie .bashrc_local, dla innych ustawień, które chciałbym zachować, aby komputer był niezależny.

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi
Rolo
źródło
1

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

  1. Utwórz plik ze swoimi udostępnionymi ustawieniami bash w folderze Dropbox.

  2. Kliknij plik prawym przyciskiem myszy i kliknij „Udostępnij link” w menu Dropbox.

  3. Następnie kliknij „Uzyskaj link”. Spowoduje to skopiowanie udostępnionego linku do schowka.

  4. Dodaj? Dl = 1 na końcu udostępnionego pliku. To pozwala uzyskać plik raw. Twój udostępniony link powinien teraz wyglądać podobnie do mojego: https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1

  5. Dodaj ten wiersz do ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Utwórz cronjob z preferowanym interwałem za pomocą tego polecenia (Zamień na swój 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;

Spowoduje to zaktualizowanie kopii ~ / .bash_shared_settings co pół godziny. Za każdym razem, gdy przeładujesz swoją sesję, uwzględnisz najnowsze zmiany.

Nick Woodhams
źródło