This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

The colon test of ${@:-w}, ${*:-w}, ${@:=w} and ${@:?} is taken on the parameter count, not on a joined value, but the guard read them as a single empty parameter does (the empty value never printed), a regression from iss-2609300651127327. With set -- "" "" (a script called as clean.sh "" "") bash 3.2, /bin/sh, dash and bash 5.3 hand rm the home for rm -rf $HOME${@:-x} and $HOME${*:?}, and / or /* for rm -rf ${@:-x}/*, ${*:-x}/ and ${@:?}/; all were allowed.

issueresolvedmajoriss-2609300726419415

The colon test of ${@:-w}, ${:-w}, ${@:=w} and ${@:?} is taken on the parameter count, not on a joined value, but the guard read them as a single empty parameter does (the empty value never printed), a regression from iss-2609300651127327. With set -- "" "" (a script called as clean.sh "" "") bash 3.2, /bin/sh, dash and bash 5.3 hand rm the home for rm -rf $HOME${@:-x} and $HOME${:?}, and / or /* for rm -rf ${@:-x}/, ${:-x}/ and ${@:?}/; all were allowed.

Grounds

  • pursued: ${@:-x}/, ${@:-x}/, ${:-x}/, ${@:?}/, ${:=x}/, $HOME${@:-x} and $HOME${:?} block bare, in bash -c and in sh -c, while ${1:-dist}/ stays allowed; a shell that printed dist/ for ${@:-x}/ after set -- "" "" would show it wrong

Frontmatter

idiss-2609300726419415
typeissue
lifecycleresolved
severitymajor

mentions1