For unset foo: dash-git $ src/dash -c 'set -- ${foo- bar }; echo "[$1]"' [bar ] Release versions of dash and all other shells output: [bar] The change in behaviour appears to have been introduced by commit 3cd5386 ("expand: Do not reprocess data when expanding words"). - Martijn -- modernish -- harness the shell https://github.com/modernish/modernish