After digging a bit, I found that the root cause is a typo in /etc/profile.d/bash-completion.sh @@ -20,7 +20,7 @@ # Some modules, including base, depend on the definitions # in .pre. See the ebuild for how this is created. if ! $loaded_pre; then - if [[ ${BASH_COMPLETION-unset} == unset ]]; then + if [[ ${BASH_COMPLETION:-unset} == unset ]]; then BASH_COMPLETION=/usr/share/bash-completion/base fi source /usr/share/bash-completion/.pre
There's another problem. Only login shells execute /etc/profile; non-login interactive shells source ~/.bashrc, so completions are not loaded for terminals that don't spawn a login shell (xterm, konsole, ...). IMHO this should be mentioned in the elog message in pkg_postinst(), which is partially wrong at the moment: afaics editing ~/.bashrc is still needed...
Santiago, you unmasked the package. Could you please fix these issues?
Wrt the first problem: $ echo ${foo-unset} $ export foo=bar $ echo ${foo-unset} yields the expected results. What's the problem you're having? What do you mean by "broken"? And the second problem, I've just added a message on pkg_postinst as you suggested. Closing the bug, please, reopen if the first problem persists and explain how it's broken. Thanks.
Nope sorry, the only problem is explained in comment #1. Just ${foo:-bar} is "more standard" than ${foo-bar}, but it's purely a style thing, behavior is identical. ;-) Thanks for your quick fixing.