The installer edited one profile — whichever ~/.zshrc or ~/.bashrc $SHELL pointed at — and skipped any profile that did not already exist. So a fresh account got nothing written at all, a bash user's ~/.bashrc is not read by the login shell macOS Terminal starts, and ~/.zshrc is only read by interactive zsh. The toolchain installed correctly and `ludic` was still not a command. The PATH edit now lives in one file, <install>/env (plus env.fish), and each profile gets a single line that sources it: ~/.profile for sh and for login bash with no .bash_profile, ~/.zshenv because zsh never reads ~/.profile and reads this one for every invocation, ~/.bashrc and ~/.bash_profile when they already exist, and fish's config when fish is installed. Missing .profile/.zshenv are created; .bash_profile deliberately is not, since creating it would stop bash from reading ~/.profile at all. Sourcing a shared file rather than appending an export keeps a re-install from accumulating a second entry, and leaves one place to delete when uninstalling. Verified with a staged HOME: zsh -i, zsh -c, bash -l, bash -i and sh -l all resolve ludic; a second run reports "already on your PATH" and writes nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
861 B
bump: patch
type: fix
ludic version reports the version of the toolchain it belongs to. It looked for
bin/ludicc and VERSION beside the current directory, so it answered
"(version unknown)" from a project — which is the only place a user ever runs it.
It now resolves the compiler through the install root, like every other command.
install.sh also now puts ludic on PATH for every shell, not just the one
$SHELL names. The PATH edit lives in one file (~/.ludic/env) that each
profile sources, and the profiles are chosen to cover what people actually open:
~/.profile for sh and login bash, ~/.zshenv because zsh never reads
~/.profile, ~/.bashrc/~/.bash_profile when they already exist, and fish's
config when fish is installed. Re-running the installer does not add a second
copy, and --no-modify-path still touches nothing.