読者です 読者をやめる 読者になる 読者になる

設定ファイル

プログラミング その他

昨日、うっかりMacbook Airをポチっとしてしまった。
そのせいで、僕所有のmacが二台になってしまうことに気づいた。
二台になると困る。


困るのが、設定ファイルだ。
.zshrcとか.emac.dだとか、もろもろ設定したものが二重管理になる。
そういうのは嫌なので、僕には個人の非公開リポジトリがあって
そこで一括管理しているんだが、管理方法としては、

configs/vimrc
configs/screenrc

みたいに、configsというディレクトリの中に、vimrcを入れているだけだ。
これだと、設定ファイルをいっこいっこコピーして
自分の~/.vimrcみたいのを作んないと行けなそうだ。


それはメンドクサイし、一台で設定を変えたら、
その設定をもう一台で有効にするのが面倒くさすぎる。
そこで、こんな感じで ~/.vimrc -> ~/configs/vimrc
symlinkを作れば良いんだけど、
いくつか設定ファイルがあるとやっぱり面倒だ。


そこで、初期化シェルを書いてみた。

#!/bin/sh

CONFIGS=(
    screenrc
    vim
    vimrc
    zshenv
    zshrc
    emacs.d
    gitconfig
)

COMMAND='ln -s'
CURRENT_DIR=`pwd`

for FILE in "${CONFIGS[@]}";do

    TO="${CURRENT_DIR}/${FILE}"
    FROM="$HOME/.${FILE}"
    EXEC_STRING="${COMMAND} ${TO} ${FROM}"

    if [ -f ${FROM} ] || [ -d ${FROM} ] || [ -e ${FROM} ] ;then
        echo "Error: '${FROM}' already exists." >&2
        continue
    fi 

    if !([ -f ${TO} ] || [ -d ${TO} ]) ;then
        echo "Error: A source '${TO}' does not exist."  >&2
        continue
    fi 

    `${EXEC_STRING}`

    if !([ -e ${FROM} ]) ;then
        echo "Error: Command '${EXEC_STRING}' failed." >&2
        continue
    fi 

    echo "Success: Created a symlink '${FROM}'."

done

exit 0


このスクリプト自体も、設定ファイルと同じディレクトリに入れておいて、リポジトリに上げちゃう。
新しいmacが届いたら、実行してやるという寸法です。


みんなはどうやって管理しているんだろう?
なんかもっといい方法あれば教えてください。


以下、備忘録
IFSとか完全に忘れていた。結局使わなかったが。。。。