本記事は ディップ 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生活を始めることができると思います。
ぜひチャレンジしてみてください。