Dotfiles 是以點 (.) 開頭的配置檔案。管理好它們,你就能:
- 版本控制你的環境
- 跨機器同步設定
- 快速在新電腦上恢復工作環境
什麼是 dotfiles?
常見的 dotfiles 包括:
.zshrc |
Zsh 設定 |
.tmux.conf |
tmux 設定 |
.gitconfig |
Git 設定 |
.config/nvim/ |
Neovim 設定 |
Symlink 策略
最常見的管理方式是使用 symlink(符號連結):
# 建立結構
~/.dotfiles/
├── zsh/
│ └── zshrc.symlink
├── tmux/
│ └── tmux.conf.symlink
├── git/
│ └── gitconfig.symlink
└── install.sh
為什麼使用 .symlink 副檔名?
你可能會好奇:為什麼不直接叫 .zshrc,而要命名為 zshrc.symlink?
這個命名慣例有幾個重要的好處:
- 辨識性:一眼就能知道哪些檔案需要被建立 symlink,哪些是輔助檔案
- 自動化安裝:安裝腳本可以自動找出所有
.symlink 結尾的檔案,批次建立連結
- 避免混淆:在 dotfiles 目錄中,你可能還有 README、安裝腳本等其他檔案,
.symlink 後綴讓目的一目了然
舉例來說,自動安裝腳本可以這樣寫:
# 自動找出所有 .symlink 檔案並建立連結
for src in $(find ~/.dotfiles -name "*.symlink"); do
dst="$HOME/.$(basename "${src%.symlink}")"
ln -sf "$src" "$dst"
done
這樣一來,不管你新增多少設定檔,只要遵循 .symlink 命名規則,安裝腳本就能自動處理。
如果你偏好手動管理,完全不使用 .symlink 命名也沒問題。你可以直接用原本的檔名(如 .zshrc),然後自己手動建立 symlink。命名慣例只是讓自動化更方便,並非強制規定。
安裝腳本會建立連結:
# install.sh
ln -sf ~/.dotfiles/zsh/zshrc.symlink ~/.zshrc
ln -sf ~/.dotfiles/tmux/tmux.conf.symlink ~/.tmux.conf
ln -sf ~/.dotfiles/git/gitconfig.symlink ~/.gitconfig
環境變數設定
在 zprofile 中設定環境變數:
# ~/.dotfiles/zsh/zprofile.symlink
export DOTFILES=$HOME/.dotfiles
export EDITOR="nvim"
export VISUAL="nvim"
# 自訂 PATH
export PATH="$HOME/bin:$PATH"
export PATH="$DOTFILES/shellscripts:$PATH"
模組化設計
將設定分成多個模組:
# zshrc.symlink
source "$DOTFILES/zsh/modules/alias.zsh"
source "$DOTFILES/zsh/modules/functions.zsh"
source "$DOTFILES/zsh/modules/fzf.zsh"
這樣做的好處:
- 容易維護
- 可以選擇性載入
- 問題容易定位
Git 管理
cd ~/.dotfiles
git init
git add .
git commit -m "Initial dotfiles setup"
git remote add origin git@github.com:username/dotfiles.git
git push -u origin main
快速同步函數
# 一鍵提交 dotfiles
function dp() {
cd $DOTFILES
git add .
aicommits # 使用 AI 生成 commit message
git push
cd -
}
實作練習
- 建立你的 dotfiles 目錄:
mkdir -p ~/.dotfiles
cd ~/.dotfiles
git init
- 移動你的第一個設定檔:
mv ~/.zshrc ~/.dotfiles/zsh/zshrc.symlink
ln -s ~/.dotfiles/zsh/zshrc.symlink ~/.zshrc
- 提交你的第一個 commit:
git add .
git commit -m "Add zsh configuration"
不要把包含密碼或 API key 的檔案加入版本控制!使用 .gitignore 排除敏感資料。