diff --git a/graph/decisions/decision-fish-configfish-exports-shellbinbash-for-tool-compa-acfad6.md b/graph/decisions/decision-fish-configfish-exports-shellbinbash-for-tool-compa-acfad6.md new file mode 100644 index 00000000000..efdaaa3b325 --- /dev/null +++ b/graph/decisions/decision-fish-configfish-exports-shellbinbash-for-tool-compa-acfad6.md @@ -0,0 +1,29 @@ +--- +id: acfad6b5-9a2c-4e51-9525-04b4c4112e69 +type: decision +title: "Decision: fish config.fish exports SHELL=/bin/bash for tool compatibility" +tags: [fish, bash, dotfiles, workstation, shell, config] +importance: 0.6 +confidence: 0.8 +created: "2026-02-27T05:55:50.719305+00:00" +updated: "2026-02-27T05:55:50.719305+00:00" +--- + +# Decision: fish config.fish exports SHELL=/bin/bash for tool compatibility + +## Decision +`~/.config/fish/config.fish` has `set -x SHELL /bin/bash` on line 1. + +## Rationale +Tools that spawn subshells based on `$SHELL` (tmux panes, editors like Neovim, some scripts) will use bash rather than fish. Fish is the interactive shell for Cal's terminal experience, but bash remains the scripting/subshell language. This avoids breakage in tools that assume POSIX-ish shell behaviour when they read `$SHELL`. + +## Scope +- Fish is the **interactive** login shell (set via `chsh`) +- Bash is the **subshell/scripting** shell (exported via `$SHELL`) +- Claude Code is **unaffected** — it spawns its own internal bash regardless of the user's `$SHELL` + +## Do Not Change +Do not update this line to `/usr/bin/fish`. If tooling issues arise with bash subshells, investigate the specific tool rather than removing this override. + +## File +`/home/cal/.config/fish/config.fish`, line 1