Package: bash-completion
Followup-For: Bug #1070074
I doubt this issue is related to util-linux-extra being too old.
I had a similar error while pressing "sudo<tab>" I got the error:
"sudo bash: _comp_initialize : commande introuvable"
ie "commande introuvable" is "command not found".
It turned out that this error only happens in bash shell I had opened
before the upgrade (the fact you had the issue opening new bash shell is
awakward to me). The bash shell I opened after were fine.
Note the _comp_deprecate_var, _comp_xxx functions are defined in
/usr/share/bash-completion/bash_completion
which is part of the bash-completion package, so upgrading
util-linux-extra can have no effect on them being present or not.
From the error I got above I guess bash completion
/usr/share/bash-completion/completions/*
might get source anew after upgrade while the
/usr/share/bash-completion/bash-completion common function definition
file is not.
A way to workaround this issue would be to source this file in existing
bash shells: "source /usr/share/bash-completion/bash_completion" indeed
fixed my shell with broken "sudo<tab>" and missing _comp_initialize
command.
I see no easy fix as as far as I know, the
/usr/share/bash-completion/bash_completion
is imported when the bash shell is started (profile file or bashrc) but it
seems the
completion files can be source during the shell runtime.
Maybe the a check at each completion files function call could be added
to check if /usr/share/bash-completion/bash_completion has changed and
source it when so. But this looks more like an upstream issue
than a Debian specific topic.
NB: I still do not understand why you got the "command not found" when
opening a new bash shell. The new
/usr/share/bash-completion/bash_completion is source from the latest
version at this point.
Maybe your $HOME/.bashrc is not up to date:
/etc/skel/.bashrc: (should be in your $HOME/.bashrc)
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
(...)
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
/etc/bash.bashrc:
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
#fi
or it is not imported from your $HOME/.profile which should have:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
but even then /etc/profile should have source the common bash completion
functions:
/etc/profile:
/etc/profile.d/bash_completion.sh
# shellcheck shell=sh disable=SC1091,SC2166,SC2268,SC3028,SC3044,SC3054
# Check for interactive bash and that we haven't already been sourced.
if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" != x -a
"x${BASH_COMPLETION_VERSINFO-}" = x ]; then
# Check for recent enough version of bash.
if [ "${BASH_VERSINFO[0]}" -gt 4 ] ||
[ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 2 ]; then
[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] &&
. "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion
]; then
# Source completion code.
. /usr/share/bash-completion/bash_completion
fi
fi
fi
Cheers
Alban
-- System Information:
Debian Release: trixie/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500,
'stable-debug'), (500, 'oldstable-debug'), (500, 'oldoldstable'), (500,
'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (1,
'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.9.0-rc5+ (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-- no debconf information