dotfiles でファイル管理できるようになって嬉しいので晒す
以前からずっとやろうやろうと思っていたが、後回しにしていた dotfiles でのファイル管理
今回は、ついに、dotfiles でファイル管理を出来るようになって嬉しいので中身を晒します。
対象ファイル
- .zshrc
- .zshenv
- Brewfile
- settings.json(vscode)
ディレクトリ構成
dotfiles/
├─ zsh/
│ ├─ .zshrc
│ └─ .zshenv
├─ dotfile.sh
├─ Brewfile
├─ settings.json
└─ dotfile.sh
GitHub Repository
覚えたこと
- シンボリックリンク
- shell script での条件分岐
- zsh 設定ファイルのこと少し
- Homebrew でアプリ管理することのメリット
内容
.zshrc
以下の記事を参考にしました。
zshの設定ファイルの読み込み順序と使い方Tipsまとめ
zsh は、ログイン時に $ZDOTDIR/
にある設定ファイル .zshrc
を読み込み、起動してくれるそうで、
その $ZDOTDIR
のデフォルトは $HOME
となっています。
なので、色々な記事で、
.zshrc はルートページに配置しましょう!
と書いてあるんですね。
つまり、 $ZDOTDIR
の場所を変更することで、 .zshrc
の保存場所を変更できます。
では、 $ZDOTDIR
はどこで定義し直すことが出来るのかですが、
それは、 $HOME/.zshenv
によって定義することができます。
...何だか、問題が帰ってきた感じがします。。
ただ、私が調べた限り、これは固定で .zshenv
の場所は変えられないようです。
よって、 .zshenv
なるものをルートパスに置いて、ZDOTDIR=${HOME}/git管理するフォルダ
とすることで、 .zshrc
を git 管理できます。
export ZDOTDIR=${HOME}/dotfiles/zsh
Brewfile
Homebrew でインストールしたアプリケーションをリスト化して管理できます。
Homebrew をインストールするだけでは、Brewfile での管理は出来ないので、 Brewfile をするアプリを Homebrew でインストールする必要があります。
インストールコマンド
$ brew install rcmdnk/file/brew-file
こちらの記事を参考に .zshrc の中で、Homebrew のコマンド実行時に、 Brewfile
を更新してくれるようにしました。
# brew
# brewfile を自動で更新する
if [ -f $(brew --prefix)/etc/brew-wrap ];then
source $(brew --prefix)/etc/brew-wrap
fi
また、これだけだと ~/Brewfile
となり、 dotfiles での管理ができません。
ZDOTDIR の要領で、 Brewfile の場所を変えます。
# brew
# brewfile を自動で更新する
if [ -f $(brew --prefix)/etc/brew-wrap ];then
source $(brew --prefix)/etc/brew-wrap
fi
# brewfile の場所を変更する
export HOMEBREW_BREWFILE=~/dotfiles/Brewfile
vscode
vscode の setting.json も、せっかくなので git で管理したいです。
ここでシンボリックリンクを使います。
$ ln -s ${DOT_DIR}/settings.json $HOME/Library/Application\ Support/Code/User
vscide の setting.json の場所にシンボリックリンクで、 dotfiles の setting.json を貼り付けます。
これで終わり。
shell
最後に、これらを1つのコマンドで完結させるために shell script を作ります。
# なんどもこのディレクトリを指すことがあるので、このファイルの場所を先に宣言しておきます。
DOT_DIR=${HOME}/dotfiles
# Brewfile を見てアプリをインストール
brew bundle
# zsh インストールされて、使えるようになっているはずなので、 zsh 構成ファイルのシンボリックリンクを作成
ln -s ${DOT_DIR}/zsh/.zshenv ${HOME}/.zshenv
# ないとは思うが、念のため、 setting.json のシンボリックリンクを作成する前に、 VScode が入っているかを確認、
if [ -e ${HOME}/Library/Application\ Support/Code/User ]; then
rm -f ${HOME}/Library/Application\ Support/Code/User/settings.json
ln -s ${DOT_DIR}/settings.json $HOME/Library/Application\ Support/Code/User
fi
これでおしまいです。
他にも .gitignore_global や、スクリーンショットの保存先などなど、もっと色々な設定も、このファイルで管理できるようにしていきたいですね。