🔑

非公開にしたい zsh config を dotfiles と共存させる

2024/09/10に公開

前提

  • zshrc を GitHub で public に管理している
  • 仕事でのみ使うコマンドを alias で登録したい

元々やっていた対策

別ファイルに置いて、import して .gitignore しておく

これがかなりシンプルな解決策かなと思います。

.zshrc
. $ZDOTDIR/.zshrc_secret
.zshrc_secret
alias access-server=xxxxxxx

DAIJI_KEY=XXXXXXX

課題

複数案件や、副業、個人開発でも同様のこと発生した。
そういう時に

.zshrc_secret
# 本業の会社
alias access-server=xxxxxxx

DAIJI_KEY=XXXXXXX

# 副業の会社

~~ 略 ~~

# 個人開発の見せちゃいけんもの

~~ 略 ~~

みたいな感じか、

ファイルを増やして、

.zshrc
. $ZDOTDIR/.zshrc_hongyo

. $ZDOTDIR/.zshrc_fukugyo

. $ZDOTDIR/.zshrc_kojin

と import を増やすかになります。

かなり埒が開かないです。

綺麗な対策

.zshrc
if [ -d "$ZDOTDIR/config.d" ]; then
  for conf in "$ZDOTDIR/config.d/"*.zsh; do
    [ -e "$conf" ] || break
    source "${conf}"
  done
fi

再起的に見つけて、import するようにしてみました。
これで、ファイルがあればそれを読み込む。
なくても怒られない。状態になりました。

zsh
├── .gitignore
├── .zshenv
├── .zshrc
└── config.d
    ├── .gitignore
    ├── README.md
    └── copilot.zsh

dotfiles

今のフォルダ構成はこんな感じです。

copilot の alias は、かなり長く、かつ発行されたものなので、僕が管理しないということもあり
同様に config.d のなかに入れています。
しかし、これは見せてもいいものなので、

zsh/config.d/.gitignore
*.zsh

!copilot.zsh

上記のような形で、管理するようにしました。

GitHubで編集を提案

Discussion