Ubuntu has a lot of advanced bash completion features that simplify using the shell. For example, when using the ssh command, I can tab complete server names based on my host file and my ssh config file. It turns out that most of this is accomplished with one bash_completion script. This page has a lot of useful information about the Bash shell and also the very useful script. I’ve found that when I use Fedora in the Xinu lab, I am left typing a lot of this stuff myself. Since I use the same bashrc file on both Dakara and my lab machine (Kastria), I didn’t want to always resource the file so I added this to my bashrc:
# Source global definitions [ -f /etc/bashrc ] && source /etc/bashrc [ -f /etc/bash.bashrc ] && source /etc/bash.bashrc # enable programmable completion features if [ -z "$BASH_COMPLETION" \ -a -r ~/.configuration/bash/bash_completion.caliban ]; then BASH_COMPLETION=~/.configuration/bash/bash_completion.caliban source $BASH_COMPLETION fi
First, I source the global definitions, Ubuntu uses /etc/bashrc, and Fedora uses /etc/bash.bashrc. After that, if the bash_completion script was already sourced, $BASH_COMPLETION will be set. I check to see if it is zero length (-z) and then source my own copy of it if it is. Now I have advanced bash completion on both Ubuntu and Fedora.