[[dotfiles]] リポジトリは、設定ファイル (`.zshrc`、`.gitconfig` など) を [[Git]] で管理する仕組み。
## 問題: 設定ファイルは決まった場所にある
アプリケーションは `~/.zshrc` など決まった場所を参照するため、設定ファイルを別の場所に移動できない。
## 解決策: シンボリックリンク
```
~/
├── .zshrc → ~/dotfiles/.zshrc(リンク)
│
└── dotfiles/ ← Gitリポジトリ
├── .zshrc ← 本体
└── install.sh ← リンクを作るスクリプト
```
設定ファイルの本体を `dotfiles/` に置き、ホームディレクトリにはシンボリックリンクを配置する。
## シンボリックリンクの仕組み
シンボリックリンクは「参照先のパス文字列だけを持つ特殊なファイル」。
```bash
# シンボリックリンクを作成
ln -s ~/dotfiles/.zshrc ~/.zshrc
# 確認
ls -la ~/.zshrc
#> lrwxr-xr-x .zshrc -> /Users/tanu/dotfiles/.zshrc
# ↑ パス文字列(数十バイト)
# 参照先を表示
readlink ~/.zshrc
#> /Users/tanu/dotfiles/.zshrc
```
- ファイルタイプは `l`(link) で示される
- 読み込み時は自動的に参照先のファイル内容が返される
## メリット
- バージョン管理: 設定の変更履歴を Git で追跡できる
- バックアップ: GitHub に push しておけば消えない
- 環境の再現: 新しい PC で clone してスクリプト実行するだけ
- 複数マシン同期: 自宅/会社で同じ設定を使える
## 関連ノート
- **[派生]** [[dotfiles ではパスをハードコードせず環境変数を使う]]: 本ノートのシンボリックリンク管理を、環境間で移植可能にするための拡張
- **[派生]** [[dotfiles ではインストール対象を宣言的な設定ファイルで管理する]]: 本ノートのリンク管理と組み合わせる運用拡張