何をしたいか
コンテナを作り直しても残るシェルの設定の置き場所(読み込み用のディレクトリ)を 1 つ用意し、~/.bashrc と ~/.zshrc がその中の *.sh を読み込むようにしてほしい。
今は ~/.bashrc と ~/.zshrc がイメージの層にあり、コンテナを作り直すと Dockerfile が書いた中身へ戻る。利用者やツールが足した alias は作り直しで消える。
ai-plugins の ndf プラグインは、claude を中継(relay.py)で包む alias を、利用者の明示の操作(/ndf:install-wrapper)で入れる。中継の本体は ~/.claude/ndf/relay.py に置く(~/.claude は /persistent/group/.claude への symlink で、作り直しでも残る)。alias の行は ~/.claude/ndf/shellrc に書く。
足りないのは、この shellrc を読み込む 1 行を、作り直しで消えない形で置く場所である。~/.bashrc に書くと作り直しで消える。
提案
| 項目 |
提案 |
| 置き場所 |
分類 B(アカウントグループ単位)の新しい項目として ~/.shellrc.d/ を /persistent/group/.shellrc.d/ へ張る(entrypoint.sh の DEVBASE_GROUP_SETTINGS に足す)。ndf の中継の本体が ~/.claude(分類 B)にあるので、同じグループの単位にそろえる |
| 読み込み |
Dockerfile が ~/.bashrc と ~/.zshrc の末尾へ、. /etc/devbase/ai-cli-aliases.sh の後に次を足す: for f in "$HOME"/.shellrc.d/*.sh; do [ -r "$f" ] && . "$f"; done; unset f(zsh では一致が無いときの誤りを避けるため setopt local_options null_glob 相当の扱いが要る) |
| 見つけ方 |
読み込むディレクトリのパスを、コンテナの環境変数 DEVBASE_SHELLRC_DIR で示す(対話シェルでない処理、たとえば Claude Code の中の Bash からも見えるように、rc ではなくコンテナの環境に置く)。ツールはこの変数があればそこへ 1 ファイルを置き、~/.bashrc を書き換えない |
汎用にする理由: 読み込むのは ndf 固有のファイルではなく、ディレクトリの中の *.sh 全部にする。devbase は 4 つの AI CLI と利用者自身の設定を載せるため、ndf のパス(~/.claude/ndf/shellrc)を devbase に書くと、ndf の置き場所が変わるたびに devbase を直すことになる。ndf 側はこのディレクトリへ ndf-relay.sh(shellrc を読む 1 行)を置く。
名前(~/.shellrc.d・DEVBASE_SHELLRC_DIR)は案で、devbase の命名に合わせて決めてよい。決まった名前を ai-plugins#928 の実装が使う。
気をつけること
由来
devbasex/ai-plugins#928(設計 PR devbasex/ai-plugins#932 の関門 1 で、利用者が「中継の alias を永続化される rc ファイルへ書き、devbase がそれを読み込む」と決めた。2026-09-23)
進行
モード: standard / 作業ツリー: .worktrees/feature/plan70-shellrc-dir / 計画: issues/PLAN70_shellrc-dir.md
振り返り: #262 (comment)
何をしたいか
コンテナを作り直しても残るシェルの設定の置き場所(読み込み用のディレクトリ)を 1 つ用意し、
~/.bashrcと~/.zshrcがその中の*.shを読み込むようにしてほしい。今は
~/.bashrcと~/.zshrcがイメージの層にあり、コンテナを作り直すと Dockerfile が書いた中身へ戻る。利用者やツールが足した alias は作り直しで消える。例: ai-plugins の中継(devbasex/ai-plugins#928)
ai-plugins の ndf プラグインは、
claudeを中継(relay.py)で包む alias を、利用者の明示の操作(/ndf:install-wrapper)で入れる。中継の本体は~/.claude/ndf/relay.pyに置く(~/.claudeは/persistent/group/.claudeへの symlink で、作り直しでも残る)。alias の行は~/.claude/ndf/shellrcに書く。足りないのは、この
shellrcを読み込む 1 行を、作り直しで消えない形で置く場所である。~/.bashrcに書くと作り直しで消える。提案
~/.shellrc.d/を/persistent/group/.shellrc.d/へ張る(entrypoint.shのDEVBASE_GROUP_SETTINGSに足す)。ndf の中継の本体が~/.claude(分類 B)にあるので、同じグループの単位にそろえる~/.bashrcと~/.zshrcの末尾へ、. /etc/devbase/ai-cli-aliases.shの後に次を足す:for f in "$HOME"/.shellrc.d/*.sh; do [ -r "$f" ] && . "$f"; done; unset f(zsh では一致が無いときの誤りを避けるためsetopt local_options null_glob相当の扱いが要る)DEVBASE_SHELLRC_DIRで示す(対話シェルでない処理、たとえば Claude Code の中の Bash からも見えるように、rc ではなくコンテナの環境に置く)。ツールはこの変数があればそこへ 1 ファイルを置き、~/.bashrcを書き換えない汎用にする理由: 読み込むのは ndf 固有のファイルではなく、ディレクトリの中の
*.sh全部にする。devbase は 4 つの AI CLI と利用者自身の設定を載せるため、ndf のパス(~/.claude/ndf/shellrc)を devbase に書くと、ndf の置き場所が変わるたびに devbase を直すことになる。ndf 側はこのディレクトリへndf-relay.sh(shellrcを読む 1 行)を置く。名前(
~/.shellrc.d・DEVBASE_SHELLRC_DIR)は案で、devbase の命名に合わせて決めてよい。決まった名前を ai-plugins#928 の実装が使う。気をつけること
ai-cli-aliases.shの後に読むと、利用者の定義が devbase の定義より勝つ。ndf の中継の alias がclaude --dangerously-skip-permissionsを上書きする件は ai-plugins 側の不具合として 中継の導入が、別ファイルで定義された claude の alias を見落として上書きする(devbase の --dangerously-skip-permissions が落ちる) ai-plugins#936 で扱う由来
devbasex/ai-plugins#928(設計 PR devbasex/ai-plugins#932 の関門 1 で、利用者が「中継の alias を永続化される rc ファイルへ書き、devbase がそれを読み込む」と決めた。2026-09-23)
進行
モード: standard / 作業ツリー:
.worktrees/feature/plan70-shellrc-dir/ 計画:issues/PLAN70_shellrc-dir.md振り返り: #262 (comment)