[Bug 790043] Re: Bash-completion slows up the start of bash
Peter Cordes
peter at cordes.ca
Mon Dec 1 20:39:12 UTC 2014
/etc/profile.d/bash_completion.sh only sources /usr/share/bash-
completion/bash_completion if it hasn't been already. note the check on
-z "$BASH_COMPLETION_COMPAT_DIR", which the giant bash_completion script
defines with
: ${BASH_COMPLETION_COMPAT_DIR:=/etc/bash_completion.d}
readonly BASH_COMPLETION_COMPAT_DIR
So I guess BASH_COMPLETION_COMPAT_DIR is the canonical way to check if
it's already loaded, since the variable gets marked readonly. (That
prevents even unset from working on it.)
This doesn't help if profile.d goes first, and then bash.bashrc or the
user's ~/.bashrc sources completions without checking, though.
The commented-out lines in the default /etc/bash.bashrc should have the same check added, if they haven't. My /etc/bash.bashrc.dpkg-old from 2013 still shows it with the crusty old:
# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
# . /etc/bash_completion
#fi
/etc/profile.d is a silly place to have this, though. How and whether
programmable completion is enabled by default is a topic for another
bug, but I don't think there's any way to justify having it for login
shells but not for non-login shells. xterm, gnome-terminal, etc. all
normally start non-login shells.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bash-completion in Ubuntu.
https://bugs.launchpad.net/bugs/790043
Title:
Bash-completion slows up the start of bash
Status in bash-completion package in Ubuntu:
Triaged
Bug description:
Binary package hint: bash-completion
I have been noticing that bash has unusually slow start-up times.
After looking into the problem, I found out this is mostly caused by
the execution of /etc/bash_completion (calls to this exist in several
places). Of course, removing them speeds up the start but leaves a
less functional shell. As a work-around I would like to suggest
starting up /etc/bash_completion in the background. In this way, bash
will start quickly, have access only to basic built-in completions for
the first 2 seconds until /etc/bash_completion finishes executing.
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: bash-completion 1:1.3-1ubuntu3
ProcVersionSignature: Ubuntu 2.6.38-8.42-generic 2.6.38.2
Uname: Linux 2.6.38-8-generic x86_64
Architecture: amd64
Date: Sun May 29 22:43:51 2011
EcryptfsInUse: Yes
PackageArchitecture: all
ProcEnviron:
LANGUAGE=en_US.UTF-8:en
PATH=(custom, no user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: bash-completion
UpgradeStatus: Upgraded to natty on 2011-04-24 (35 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash-completion/+bug/790043/+subscriptions
More information about the foundations-bugs
mailing list