Auswirkungen auf die gemeinsame Nutzung von .bashrc auf mehreren Computern mit Dropbox?


22

Ich arbeite auf vielen verschiedenen Rechnern, auf denen Ubuntu läuft (nicht immer dieselbe Version). Ich habe einige grundlegende Anpassungen an meiner Eingabeaufforderung vorgenommen, die ich gerne auf allen Computern verfügbar haben möchte.

Ich verwende derzeit Dropbox und speichere dort alle meine anderen "Punktedateien", z. B. meine .vim / .vimrc .gitconfig .ackrc. Ich verbinde sie dann einfach aus meinem Dropbox-Ordner in meinen Home-Ordner. Voilà, alle Maschinen synchron.

Ich bin mir nicht sicher, wie sich das auf meinen bashrc auswirkt. Kann jemand Vorschläge machen? Vielleicht eine einfache Möglichkeit, eine separate Datei in den bashrc zu laden?

Antworten:


28

Ich sehe keine wirklichen Auswirkungen, aber ich nehme an, es hängt davon ab, was du da drin hast! Wenn es nur schnelle Aliase sind, die überall gleich funktionieren, und kosmetische Dinge, sehe ich keine Probleme.

Sie können entweder Ihre .bashrcan einen beliebigen Ort in Ihrem Dropbox-Ordner verschieben und sie dann auf jedem der Computer mit Symlinks verknüpfen.

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

Ich habe tatsächlich einige Punktedateien in meinem Home-Ordner, die eigentlich symbolische Links zu freigegebenen Ordnern in meinem Dropbox-Konto sind.

Eine andere Option ist, dass Sie eine Datei in Ihrem Dropbox-Ordner erstellen können, die von Ihrem .bashrc:

Dh, in deine .bashrc, setzen:

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

und erstellen Sie dann eine bashrc-shared-settings-Datei, die auf allen Rechnern verwendet werden soll. Sie können jedoch separate .bashrcDateien behalten .

(Sie können auch sourceeinfach .mit bash abkürzen .)


Ich habe meine anderen Punktedateien wie in Ihrem Beispiel eingerichtet. Ich bin mit Bash einfach nicht so vertraut und war mir nicht sicher, wie "speziell" all das Standardmaterial ist, das Ubuntu dort einfügt. Ich werde die von Ihnen vorgeschlagene Quellmethode verwenden. Vielen Dank!
Alan Peabody

8

Das Hauptrisiko, an das ich denken kann, ist, dass Sie sich daran erinnern müssen, dass Synchronisierung nicht dasselbe ist wie Sichern. Alle Fehler werden mit all Ihren Maschinen synchronisiert.

So ~/.bashrcfügen Sie eine separate Datei hinzu:

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

Wobei ~ / .foo die separate Datei ist.


1
Du hast recht! Aber zum Glück behält Dropbox Revisionen Ihrer Dateien bei, sodass die Daten automatisch gesichert werden :)
Alex

Vielen Dank für den tollen Vorschlag, ich werde eine zweite Datei manuell beschaffen und wahrscheinlich diese Syntax verwenden.
Alan Peabody

6

Normalerweise ist das Zentralisieren von Konfigurationsdateien eine gute Sache! Wenn Sie anpassen möchten, was basierend auf einem bestimmten Betriebssystem oder Hostnamen ausgeführt wird, können Sie in Ihrer .bashrc-Datei Folgendes tun:

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

Erstellen Sie dann ein .bash Verzeichnis und die OS und Host - Verzeichnisse unter dem und setzt alle benutzerdefinierten Einstellungen in Dateien mit dem Namen <unabhängig> .sh wo < , was> ist der os - Typ oder die Host Sie besonders angefertigt werden sollen.

Ich behalte all diese Dateien in Dropbox und habe ein Bash-Skript namens link_dropbox in meinem Dropbox-Ordner, mit dem ich sie einfacher verknüpfen kann:

#!/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

2

Ich behalte meine .bashrc-Datei zusammen mit vielen anderen Konfigurationsdateien (.gitconfig, .vimrc usw.) in Dropbox als Symbol.

Ich habe am Ende eine Datei mit dem Namen .bashrc_local als Quelle für andere Einstellungen, die ich möglicherweise maschinenunabhängig machen möchte.

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

1

Das Synchronisieren mit Dropbox ist großartig, aber wenn Sie Dropbox nicht auf dem Server installieren möchten, können Sie meine Methode implementieren.

  1. Erstellen Sie eine Datei mit Ihren freigegebenen Bash-Einstellungen in Ihrem Dropbox-Ordner.

  2. Klicken Sie mit der rechten Maustaste auf die Datei und klicken Sie im Dropbox-Menü auf "Link freigeben".

  3. Klicken Sie dann auf "Link abrufen". Dadurch wird der freigegebene Link in Ihre Zwischenablage kopiert.

  4. Fügen Sie am Ende der freigegebenen Datei? Dl = 1 hinzu. Auf diese Weise können Sie die Rohdatei abrufen. Ihr freigegebener Link sollte jetzt ähnlich aussehen wie meiner: https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1

  5. Fügen Sie diese Zeile zu ~ / .bashrc hinzu

    source $HOME/.bash_shared_settings

  6. Erstellen Sie mit diesem Befehl einen Cronjob mit Ihrem bevorzugten Intervall (Ersetzen Sie ihn durch Ihre freigegebene Dropbox-Datei!)

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

Dadurch wird Ihre Kopie von ~ / .bash_shared_settings alle eine halbe Stunde aktualisiert. Bei jedem erneuten Laden Ihrer Sitzung werden die neuesten Änderungen berücksichtigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.