びくんびくんしながらコードを書く。

いしきひくい系エンジニアのらくがき帳

dotfilesで自分の環境を管理しよう

本記事は ディップ with 全部俺 AdventCalendar 4日目の記事です。

私はMacのシェルはbashのまま使用してますのでzshなどに変えている人は適宜読み替えてください。

github.comのPrivateRepositoryが無料で利用できるようになったことで、dotfilesの管理もしやすくなったと思います。
今回はガッツリインストール周りまでshell化するのではなく、こんな感じで管理してみるといいんじゃないか?くらいの軽い内容です。

What is Dotfiles?

dotfilesとはホームディレクトリに置かれているドット(.)から始まる設定ファイルを管理するためのリポジトリです。
gitやbash、その他CLIツールの設定をdotfilesリポジトリにまとめ、実際に置かれているPathへシンボリックリンクを貼ることでリポジトリ内の設定ファイルを読むようにします。

リポジトリのディレクトリ構成

ディレクトリ構成はコマンドでシンボリックリンクが作りやすいようにホームディレクトリに置かれているとおりに作成したほうが良いでしょう。

例えば.bash_profile だったらリポジトリ直下というような形で作成していきます。 具体的に下記に示します。

一例

$ tree -a
.
├── .bash_profile
├── .bashrc
├── .gitconfig
├── .gitignore_global
├── .peco
│   └── config.json
├── brew_install_soft.sh
└── setup.sh

用意してあるシェルについて

  • brew_install_soft.sh
    このシェルは私は用意しているくらいのシェルです。
    homebrewでインストールするソフトウェアが brew install ghq というように羅列されています。
  • setup.sh
    こちらのシェルが本命となるシェルです。
    中身はリポジトリのファイルをホームディレクトリにリンクするためのシェルが書かれています。

シェルが得意な方は一行づつシンボリックリンク作成用のコマンドを入れるのではなく、ループで処理すると良いと思いますが、現在私はまだシンボリックリンクを作成するためのコマンドを一行づつ記載している状態なので、これでも運用できますよくらいに思ってください。

内容は下記のようなものになります。

#!/bin/bash

ln -sf ~/dotfiles/.gitconfig ~/.gitconfig
ln -sf ~/dotfiles/.gitignore_global ~/.gitignore_global
ln -sf ~/dotfiles/.bashrc ~/.bashrc
ln -sf ~/dotfiles/.bash_profile ~/.bash_profile
ln -sf ~/dotfiles/.peco ~/.peco


source ~/.bash_profile

.bash_profile及び.bashrcが入っているため、置き換え後に読み込み直すような処理を入れています。

愚直に書いておりメンテナンス性はそれほど良くありません、またこの書き方はdotfilesのリポジトリをホームディレクトリ直下に置かないと動作しません。
ただ、本件でいうと利用するのは自分だけのため、はじめの一歩としてはこれで良いと思っています。

macが変わるたびにエイリアスを登録しないといけないとかgitignore_globalを毎回セットしないといけないという煩わしさからは開放されるのではないでしょうか?

なんだか難しそうと思った方もこれで安心してdotfiles生活を始めることができると思います。
ぜひチャレンジしてみてください。