fix(install): pin bash-preexec to 0.6.0 release#3469
Conversation
install.sh and the bash install docs curl bash-preexec from master.
A commit landed on master after the 0.6.0 release that adds a PS0
based preexec hook for bash 5.3+ using the new "command substitution
that has no value" syntax:
PS0=${PS0-}'${ __bp_invoke_preexec_from_ps0 "$_" >&2; }'
Ubuntu 26.04 ships bash 5.3.9, which activates that path. Under
some environments the PS0 funsub body is printed verbatim before
each command instead of being suppressed, producing the
__bp_invoke_preexec_from_ps0 "..." >&2; } string the issue reports.
I can reproduce the literal leak locally with bash 5.3.9 by sourcing
master with promptvars off; the 0.6.0 file does not set PS0 at all,
so the leak goes away regardless of the surrounding shell state.
The DEBUG-trap preexec path that 0.6.0 uses still fires
__atuin_preexec on every command, so atuin history capture continues
to work on bash 5.3.9.
Updates install.sh, docs/docs/guide/installation.md and
docs-i18n/zh-CN/README.md to point at the 0.6.0 tag.
Refs atuinsh#3456
Signed-off-by: ChrisJr404 <chris@hacknow.com>
Greptile SummaryPins
Confidence Score: 5/5Safe to merge — three one-line URL substitutions with no logic changes. The change is three identical string replacements swapping No files require special attention. Important Files Changed
Reviews (1): Last reviewed commit: "fix(install): pin bash-preexec to 0.6.0 ..." | Re-trigger Greptile |
|
This was also reported at rcaloras/bash-preexec#186.
The problem is caused by
The user should have loaded both |
|
We've submitted a patch to the upstream: https://gitlab.gnome.org/GNOME/vte/-/work_items/2951. |
What
install.shand the bash install docs fetchbash-preexec.shfrommasterinstead of a release tag. This PR pins all three call sites to the0.6.0tag.Why
A commit landed on
masterafter the0.6.0release that adds a PS0 based preexec hook for bash 5.3+ using the new "command substitution that has no value" syntax:Ubuntu 26.04 ships bash 5.3.9, which activates that branch. Under some shell environments the funsub body is printed verbatim before each command instead of being suppressed cleanly, producing the
__bp_invoke_preexec_from_ps0 "..." >&2; }text the issue reports.I can reproduce the literal leak locally with bash 5.3.9 by sourcing the
masterfile withpromptvarsoff:The reporters in #3456 have
promptvars on, so something else in their~/.bashrcflips the funsub from "fires silently" to "prints body", and I haven't pinned down the exact environmental trigger from the issue alone. What's clear is that0.6.0doesn't setPS0at all, so pinning to that tag sidesteps the whole code path regardless of which environment trigger is at play.I'm not 100% sure this matches every report in the thread (one user noted
ble.shfixed the history symptom but not the gibberish), but the gibberish signature is unambiguously the PS0 hook frommaster, and pinning a release tag is the right move either way for a fetched dependency.History capture
0.6.0still installs the DEBUG-trap preexec path, which fires__atuin_preexecon every command, so atuin history capture continues to work on bash 5.3.9.Files changed
install.shline 65 (the actual install path users hit)docs/docs/guide/installation.md(English docsbash-preexecmanual setup instructions)docs-i18n/zh-CN/README.md(Simplified Chinese mirror of the same)Long term
The underlying bug belongs upstream in
bash-preexec. Pinning here protects new atuin installs in the meantime; a future bump to a newbash-preexecrelease that fixes the PS0 funsub is a small follow-up.Refs #3456