With fresh 9.1 install, bash completion no longer expands "$HOME"

David P. Caldwell david at code.davidpcaldwell.com
Mon Jun 10 11:56:53 UTC 2013

On my 9.0-based machines, if I typed $HOME[tab] when typing a command
in bash, the $HOME would be overwritten by the actual path to my home
directory (the value of $HOME) and tab completion would work as

After a fresh 9.1 install, this does not work as well.

$HOME is still detected by completion, but it is not expanded after
pressing tab (this does not matter to me), but also an extra space is
inserted after tab.

For example, if I have a directory named src under my home directory,
and my working directory is an unrelated directory, and I type cd

Under 9.0:
cd /home/dcaldwell/src/[cursor]

Under 9.1:
cd $HOME/src [cursor]

So under 9.1 I lose the slash and see a space instead, essentially,
which renders this not very useful.

If I use ~ rather than $HOME, it works correctly under both. Obviously
I could probably learn to type ~ rather than $HOME but it would be a
hard habit to break after years. :)

For bash (and for most software) I am using binary packages from the
-release distribution, so my 9.0 machines have 4.1.11 and my 9.1
machines have 4.2.37.

I don't know enough about all the moving parts to know where to start
tracking this down, so can someone point me in the right direction?
(Unless there's an known problem or change I'm missing.) I can't
figure out where completion is configured in bash outside the
/usr/local/etc/bash_completion.d/ directory, which incidentally on my
9.1 setup contains:

$ ls /usr/local/etc/bash_completion.d/
dbus-bash-completion.sh*        gdbus-bash-completion.sh*


-- David Caldwell

More information about the freebsd-questions mailing list