Description of problem:
If bash_completion.sh exists in /etc/profile.d, /etc/X11/gdm/Xsession ultimately
runs that script twice. The second time it seems to perform an "exit", which
terminates Xsession (which invokes /etc/profile and ~/.profile with a ".".
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. My ~/.profile does ". /etc/profile" then adds additional paths to PATH
2. Logout, login via gdm.
GDM complains that the session last less than 10 seconds. There is no error
Gnome's (or KDE's) session should start.
Debugging echo's trace the run through /etc/X11/gdm/Xsession through a
successful run of ". /etc/profile", but the echo after ". $HOME/.profile" never
If I rename the bash_completion.sh script (bash_completion.sh.tmp), I can log in.
I can't seem to find an exit in bash_completion.sh.
Created attachment 121541 [details]
One way to debug stuff like this is to add eg. a "set -x" somewhere near the top
of /etc/X11/gdm/Xsession, then try logging in, and while the gdm dialog about
things going south is still visible, peek into /tmp/xses-$USERNAME.XXXXXX from a
Anyway, from debugging like in above, it seems it has something to do with the
"readonly" stuff at top of /etc/bash_completion. When the session prematurely
aborts (when sourcing it for the second time), the "set +v" at the top is the
last thing run.
I don't see anything wrong offhand with the code, but one potential workaround
is to change this at the top of /etc/profile.d/bash_completion.sh:
[ -z "$BASH_VERSION" ] && return
[ -z "$BASH_VERSION" -o -n "$BASH_COMPLETION" ] && return
I'm not sure if this is the best possible way around it but it seems to work for
me. Could you try it out?
Yes adding the ' -o -n "$BASH_COMPLETION"' works around the problem for me.
Thanks, this workaround will be in 20050721-2.fc5.