Dropboxでマシン間で.bashrcを共有することへの影響?


22

私は多くの異なるマシンで作業しています。すべてがUbuntuを実行しています(常に同じバージョンではありません)。すべてのマシンで利用できるようにしたいプロンプトに対して、いくつかの本当に基本的なカスタマイズがあります。

現在、Dropboxを使用して、.vim / .vimrc .gitconfig .ackrcなど、他のすべての「ドットファイル」をそこに保存します。次に、Dropboxフォルダーからホームフォルダーにリンクします。Voilà、すべてのマシンが同期しています。

私のbashrcでこのようなことを行うことの影響は何かわかりません。誰でも提案を提供できますか?たぶん、bashrcに別のファイルをロードする簡単な方法でしょうか?

回答:


28

本当の影響はありませんが、あなたがそこに持っているものに依存していると思います!どこでも同じように機能する簡単なエイリアスと、化粧品だけであれば、問題は発生しません。

.bashrcDropboxフォルダーのどこかに移動してから、各マシンでシンボリックリンクすることができます。

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

私のホームフォルダーには、実際にはDropboxアカウントの共有フォルダーへのシンボリックリンクであるかなり多くのドットファイルがあります。

別のオプションとして、Dropboxフォルダー内にファイルを作成して、次のソースを使用することもできます.bashrc

すなわち、あなたの.bashrcに入れてください:

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

そして、すべてのマシンで使用したいものであるbashrc-shared-settingsファイルを作成しますが、それでも別々の.bashrcファイルを保持できます。

(bashのsourceように短縮することもでき.ます。)


私はあなたの例に従って他のドットファイルを設定していますが、bashにあまり精通していないため、Ubuntuが置くすべてのデフォルトのものがどのように「特別」であるか確信がありませんでした。先に進み、提案されたソースメソッドを使用します。ありがとうございました!
アランピーボディ

8

私が考えることができる主なリスクは、同期はバックアップと同じではないことを覚えておく必要があるということです。間違いはすべてのマシンに同期されます。

~/.bashrc追加に別のファイルを含めるには、次のようにします。

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

ここで、〜/ .fooは個別のファイルです。


1
あなたが正しい!しかし、幸いなことに、Dropboxはファイルのリビジョンを保持しているので、ものは自動的にバックアップされます:)
アレックス

素晴らしい提案のおかげで、私は手動で2番目のファイルを調達し、おそらくこの構文を使用します。
アランピーボディ

6

通常、構成ファイルを一元化することは良いことです!特定のOSまたはホスト名に基づいて実行するものをカスタマイズする場合は、.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

次に、.bashディレクトリとその下のosおよびホストディレクトリを作成し、<whatever> .shというファイルにカスタム設定を配置します。ここで、<whatever>はosタイプまたはカスタマイズするホストです。

これらのファイルはすべてDropboxに保存し、Dropboxフォルダーにはlink_dropboxというbashスクリプトがあります。これにより、これらのファイルをリンクしやすくなります。

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

.bashrcは、他の多くの構成ファイル(.gitconfig、.vimrcなど)とともにDropboxでシンボリックリンクを保持しています。

私はマシンの独立性を保ちたいと思うかもしれない他の設定のために、その最後に.bashrc_localと呼ばれるファイルを入手します。

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

1

Dropboxとの同期は素晴らしいですが、サーバーにDropboxをインストールしたくない場合は、私の方法を実装できます。

  1. Dropboxフォルダーに共有bash設定でファイルを作成します。

  2. ファイルを右クリックし、Dropboxメニューから[リンクを共有]をクリックします。

  3. 次に、「リンクを取得」をクリックします。これにより、共有リンクがクリップボードにコピーされます。

  4. 共有ファイルの最後に?dl = 1を追加します。これにより、生ファイルを取得できます。共有リンクは次のようになります:https : //dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1

  5. この行を〜/ .bashrcに追加します

    source $HOME/.bash_shared_settings

  6. このコマンドを使用して、好みの間隔でcronjobを作成します(Dropbox共有ファイルに置き換えてください!)

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

これにより、〜/ .bash_shared_settingsのコピーが30分ごとに更新されます。セッションをリロードするたびに、最新の変更が含まれます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.