summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorVille Skyttä <ville.skytta@iki.fi>2009-10-22 11:37:35 +0300
committerVille Skyttä <ville.skytta@iki.fi>2009-10-22 11:37:35 +0300
commite16e0726597565f75a61f374bf3ab483e8c77292 (patch)
treea4037b9a0becee785772660374e484875e50434d /README
parent1c53627fa2936fe9fd9f472859b8cfd4077b054f (diff)
downloadbash-completion-e16e0726597565f75a61f374bf3ab483e8c77292.tar.gz
bash < 3 support removal step 3: update documentation.
Diffstat (limited to 'README')
-rw-r--r--README94
1 files changed, 17 insertions, 77 deletions
diff --git a/README b/README
index 5d0bb3ee..6fa8a4f8 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