ludic/changes/version-from-install-root.md
Orkuncakilkaya 44e752b606 fix(install): put ludic on PATH in every shell, not just $SHELL's
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>
2026-09-05 22:20:39 +03:00

14 lines
861 B
Markdown

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.