aboutsummaryrefslogtreecommitdiff
path: root/bash/bashrc
diff options
context:
space:
mode:
Diffstat (limited to 'bash/bashrc')
-rw-r--r--bash/bashrc21
1 files changed, 18 insertions, 3 deletions
diff --git a/bash/bashrc b/bash/bashrc
index a24a34fe..e7973562 100644
--- a/bash/bashrc
+++ b/bash/bashrc
@@ -108,9 +108,24 @@ fi
# Load POSIX shell functions, Bash-specific scripts, and Bash completion files,
# in that order
-for sh in "$ENV" \
- "$HOME"/.bashrc.d/*.bash \
- "$HOME"/.bash_completion.d/*.bash ; do
+for sh in "$ENV" "$HOME"/.bashrc.d/*.bash ; do
[[ -e $sh ]] && source "$sh"
done
unset -v sh
+
+# If we have dynamic completion loading (Bash>=4.0), use it
+if ((BASH_VERSINFO[0] >= 4)) ; then
+ _completion_loader() {
+ [[ -n $1 ]] || return
+ compspec=$HOME/.bash_completion.d/$1.bash
+ [[ -f $compspec ]] || return
+ source "$compspec" >/dev/null 2>&1 && return 124
+ }
+
+# If not, load all of the completions up now
+else
+ for sh in "$HOME"/.bash_completion.d/*.bash ; do
+ [[ -e $sh ]] && source "$sh"
+ done
+ unset -v sh
+fi