怎樣管理 linux / mac 的配置文件

怎樣管理 linux / mac 的配置文件

在 *nix 系統中,home 目錄下通常有許多程序的配置文件(rc files),它們能夠更改程序運行時的行爲。linux

如何管理並在多臺機器上分享、同步這些配置文件也算是一個棘手的問題,固然解決方法也有很多git

使用 git 直接管理 home 目錄

使用 git 之類的版本控制工具把整個 home 目錄保存下來,這其中 ignore 文件也有兩種處理方式github

一種是先 ignore 全部,而後排除須要的文件

示例:cat ~/.gitignoreshell

/*
!/.gitignore
!/.bashrc
/some_dir/*
!/some_dir/sub_dir/*
# ...

另外一種是 ignore 不須要的文件

示例:cat ~/.gitignoreubuntu

/Desktop
/Documents
# ...

利弊

  • : 簡單,直觀
  • :home 目錄會顯得不乾淨,並且每次增長、刪除文件都須要更改 .gitignore 文件。

使用 symbolic link

把配置文件集中到一個 home 的子目錄,好比 ~/.dotfiles,在 home 目錄建立連接到這個 .dotfiles 目錄的 symbolic link,這樣只須要把這個 .dotfiles 目錄使用 git 管理就行了vim

可是會遇到幾個問題bash

  • 對待同名目錄,單純 link 這個目錄可不行,須要在 home 目錄建立同名目錄,而後分別建立這個目錄下的 symlink
  • 手動建立並管理這些 symlink 是很是繁瑣的步驟

那麼就須要一個輔助管理 symlink 的工具,gnu stow 就是這樣的工具工具

安裝 stow

# for mac
$ brew install stow
# for ubuntu
$ apt-get install stow

# show help
$ stow -h

使用

假設你的配置文件存放在 ~/.dotfiles 目錄下,結構爲設計

├── git
│   ├── .gitconfig
│   └── .gitignore_global
├── shell
│   ├── .bashrc
│   └── .zshrc

要把 git 配置 link 到 home 目錄下版本控制

# usage
$ stow -d $HOME/.dotfiles -t $HOME git

這樣,.gitconfig.gitignore_global 會被 link 到 home 目錄下

$ ls -al ~

lrwxr-xr-x    .gitconfig -> .dotfiles/git/.gitconfig
lrwxr-xr-x    .gitignore_global -> .dotfiles/git/.gitignore_global

實際案例

my dotfiles https://github.com/xieyunzi/dotfiles

使用了 stow 管理 dotfiles,crontab 自動處理一些更新任務

包含了 git, bash, zsh, tmux, vim 等等的配置,目前只在 mac 上使用

固然,還有不少細節的設計

如何處理不一樣機器所需配置間的微小差別,以及個性化的需求

使用 *.local 文件存儲本機的差別性需求,會覆蓋同名文件的配置,好比 email 等配置,工做機器和本身的機器通常會不一樣

待續

相關文章
相關標籤/搜索