[Bash-completion-commits] [SCM] bash-completion branch, master, updated. eb5e62dec1119d8710368f844723900e2bdedfd4

Ville Skyttä ville.skytta at iki.fi
Thu Oct 22 09:12:16 UTC 2009


The following commit has been merged in the master branch:
commit e16e0726597565f75a61f374bf3ab483e8c77292
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Thu Oct 22 11:37:35 2009 +0300

    bash < 3 support removal step 3: update documentation.

diff --git a/README b/README
index 5d0bb3e..6fa8a4f 100644
--- a/README
+++ b/README
@@ -12,48 +12,20 @@ if [ -f /etc/bash_completion ]; then
   . /etc/bash_completion
 fi
 
-(if you happen to have *only* bash >= 2.04, see further if not)
+(if you happen to have *only* bash >= 3, see further if not)
 
 If you don't have the package readily available for your distribution, or
 you simply don't want to do this, put the bash_completion file somewhere
 on your system and source it from either /etc/bashrc or ~/.bashrc, as
 explained above.
 
-Here's another possible way of doing that from /etc/bashrc:
-
-# Check for interactive shell.
-if [ -n "$PS1" ]; then
-  if [ $bmajor -eq 2 -a $bminor '>' 04 ] || [ $bmajor -gt 2 ]; then
-    if [ -r /etc/bash_completion ]; then
-      # Source completion code.
-      . /etc/bash_completion
-    fi
-  fi
-fi
-unset bash bminor bmajor
-
-This code checks that the version of bash that is parsing the code is
-later than 2.04 and, if so, sources the bash completion code.
-
-While this code may, at first, seem overly complex, the advantage of
-using it is that it will also parse correctly when interpreted by bash
-1.x. If you have bash 1.x and bash 2/3.x users on your system, you
-must avoid using constructs that were not valid under 1.x syntax.
-
-If your system has an /etc/profile.d directory, you might instead want
-to add a script called bash_completion.sh to that directory. Add the
-above code, preceded by the following:
-
-# Check for bash.
-[ -z "$BASH_VERSION" ] && return
-
-In this case, all *.sh scripts in /etc/profile.d are sourced from
-/etc/bashrc by Bourne-like shells, so you need the extra check for bash
-in order to avoid sourcing the rest of the script if a shell other than
-bash is running.
-
-For your convenience, a sample bash_completion.sh file is included in
-the package.
+A more elaborate way that takes care of not loading on old, unsupported
+bash versions as well as some other conditions is included in the bash
+completion package as bash_completion.sh.  If your system has the
+/etc/profile.d directory and loads all files from it automatically,
+you may place the file in it.  If not, place the file somewhere on your
+system and source it from /etc/bashrc or ~/.bashrc, or copy its contents
+to one of those files.
 
 If you're using MacOS X, /etc/bashrc is apparently not sourced at all.
 In that case, you should put the bash_completion file in /sw/etc and add
@@ -72,31 +44,6 @@ place to do this.
 TROUBLESHOOTING
 ---------------
 
-If you get errors about 'complete' or 'compgen' not accepting the -g
-flag, you are probably running bash 2.05 and should either apply the
-group completion patch, download a prepatched bash binary of 2.05, or
-upgrade to 2.05a or later.
-
-If you find that some commands, such as 'cd /usr<Tab>', end with a
-trailing space instead of appending a /, you are probably running the
-base version of bash 2.05, which suffers from a bug that causes the
-'-o filenames' option to the complete built-in to be ignored. You can
-fix this by applying the following official patch from the bash
-maintainer:
-
-	ftp://ftp.gnu.org/gnu/bash/bash-2.05b-patches/bash205b-006
-
-If you get errors about 'complete' not accepting the -o flag, you are
-probably running bash 2.04. In this case, you should upgrade to bash
-2.05a or later. However, we have endeavoured to make the code detect
-this version of bash and work around this issue, so please inform us
-if you still encounter this error.
-
-Copies of the patches and prepatched versions of bash are available
-from:
-
-	http://www.caliban.org/bash/
-
 If you find that a given function is producing errors under certain
 circumstances when you attempt completion, try running 'set -v' or
 'set -x' prior to attempting the completion again. This will produce
@@ -397,23 +344,16 @@ guidelines in mind:
   start interpreters. Use lightweight programs such as grep(1), awk(1)
   and sed(1).
 
-- Use the full power of bash 2.x. Programmable completion has only
-  been available since bash 2.04, so you may as well use all the
-  features of that version of bash to optimise your code. However, be
-  careful when using features added since 2.04, since not everyone
-  will be able to use them. Be ESPECIALLY careful of using features
-  exclusive to 3.x, as many people are still using 2.x.
-
-  For example, here strings (<<<) were not added until 2.05b, so don't
-  use them for the time being.
-
-  Similarly, 3.0 added the use of the regex operator '=~', commonly
-  found in Perl and Ruby. Whilst this is very useful, it's not yet
-  safe to assume its ubiquity.
+- Use the full power of bash >= 3. We no longer support earlier bash
+  versions, so you may as well use all the features of that version of
+  bash to optimise your code. However, be careful when using features
+  added since bash 3.0, since not everyone will be able to use them. Be
+  ESPECIALLY careful of using features exclusive to 4.x, as many people
+  are still using 3.x.
 
-  On the other hand, extended globs were added in bash 2.02 and often
-  enable you to avoid the use of external programs, which are
-  expensive to fork and execute, so do make full use of those:
+  For example, extended globs often enable you to avoid the use of
+  external programs, which are expensive to fork and execute, so do
+  make full use of those:
 
   ?(pattern-list) - match zero or one occurrences of patterns
   *(pattern-list) - match zero or more occurrences of patterns

-- 
bash-completion



More information about the Bash-completion-commits mailing list