Skip to content

BUG: bash shell parity — aliases never load, PATH hard-reset, no nvm #688

Description

@mlorentedev

Severity: High/Med · Proposed priority: P2 · Audit IDs: C2, C15, C29, C40

bash is a second-class shell relative to zsh; several features silently do not work in it.

C2 — all bash aliases are dead. setup-linux.sh:148 writes the generated alias file to $HOME/.bash/bash_aliases, but the deployed .bashrc:129-130 sources ~/.bash_aliases (a different path). The whole alias payload (gs/gd/gl/gp/k/kc/dch/tx/oclog/qq/qf…) never loads in bash. The final check (setup-linux.sh:1430) only asserts the file exists, so it passes. (Compounding: had it loaded, alias qq='noglob _qq_call …' — zsh noglob — would error in bash and shadow the bash qq() function.)

C15 — bash hard-resets PATH; zsh does not. .bashrc:105 export PATH="/usr/local/bin:/usr/bin:/bin:…" while .zshrc:83 has that line commented out. Any nested interactive bash (tmux pane, IDE terminal) wipes inherited PATH (nvm node, /snap/bin, ~/bin).

C29 — bash never gets nvm; setup re-deploys .bashrc wiping installer init. nvm loads only via .zshrc:136; .bashrc has no nvm block, and setup-linux.sh:174 overwrites ~/.bashrc each run, deleting the lines installers appended — while setup-linux.sh:1426 calls that drift "expected".

C40 — OPENCODE_VERSION unguarded under set -u. setup-linux.sh:654/666/674 reference it bare; a checkout missing versions.conf aborts setup, contradicting the adjacent "fall back to latest" comment. Sibling vars are guarded. Fix: ${OPENCODE_VERSION:-}.

Fix: point .bashrc at ~/.bash/bash_aliases (or write to ~/.bash_aliases); align bash PATH policy with zsh; load nvm in bash; guard OPENCODE_VERSION. Consider a dotf doctor check that a known alias resolves in a non-interactive bash.

Source: docs/audits/codebase-audit-2026-07-06.md (C2, C15, C29, C40).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions