macOSやLinux, Unixではユーザのホームディレクトリに置いた「.」で始まる不可視ファイルで各種設定を行うのが通例.その設定ファイルをdotfilesなどと呼ぶ.これを移植することで異なるマシンでも同じ環境をある程度保つことができる.

そのため,dotfilesをうまいこと管理することで,新しいマシンでも簡単に環境構築できることから,dotfilesをGithubなどでバージョン管理し,必要に応じてGithubからダウンロードしてきて使うという方法が便利.

前提条件

以下の説明では,次の環境を仮定している.自分の環境に応じて適当に読み替えればよい.

  • zsh
    • oh-my-zsh を使う(見栄えやエイリアスなどが良い)
  • emacs
    • prelude を使う(見栄えが良い)— .emacs.d/personal/ディレクトリだけ書き換える.
  • GNU stow
    • dotfilesを簡単にインストールするのに使う

手順

ユーザのホームディレクトリに次のようなディレクトリ構造を作成する.

dotfiles
├── README.md
├── emacs
│   └── .emacs.d
│       └── personal
├── git
│   ├── .gitconfig
│   └── .gitignore_global
├── gnuplot
│   └── .gnuplot
├── tmux
│   └── .tmux.conf
└── zsh
    ├── .zsh
    │   └── aliase.zsh
    └── .zshrc

ホームディレクトリにコピーしたいドットファイルを種類に分けて別々のディレクトリに格納している.例えば,「.emacs.d」ディレクトリが「emacs」 ディレクトリの中に入れてある.「zsh」ディレクトリ内にはzsh関連のドットファイルが入っている.

この dotfiles/ ディレクトリがホームディレクトリに置いてあれば,次のようにそのディレクトリ内で stow を実行すれば良い.

cd ~/dotfiles/
stow -v emacs git gnuplot tmux zsh

この stow コマンドは,この stow を実行したディレクトリの親ディレクトリに指定された各ディレクトリ内のファイルとフォルダのsymlinkを作成する.dotfiles/ディレクトリが別の場所にある場合は,何らかのoptionを指定する必要がある.

このdotfilesをgitでバージョン管理し,Githubにrepositoryを作ってあれば,新しいマシンで次のようにして環境を構築することができる.

cd ~
git clone https://github.com/your_user_id/dotfiles.git ~/dotfiles
cd dotfiles/
stow -v emacs git gnuplot tmux zsh

いちいち,全てのファイルを新しいマシンにアップロードして,symlinkを手動で作成するよりもだいぶ楽だし,どこかのマシンで環境を変更したら,それをGithubにpushして,他のマシンでそれをpullしてもう一度 stow を実行すれば環境が更新される.