Imported from ../bash-2.05b.tar.gz.
This commit is contained in:
parent
f73dda092b
commit
7117c2d221
362 changed files with 34387 additions and 15063 deletions
178
doc/FAQ
178
doc/FAQ
|
|
@ -1,4 +1,4 @@
|
|||
This is the Bash FAQ, version 3.17, for Bash version 2.05a.
|
||||
This is the Bash FAQ, version 3.20, for Bash version 2.05b.
|
||||
|
||||
This document contains a set of frequently-asked questions concerning
|
||||
Bash, the GNU Bourne-Again Shell. Bash is a freely-available command
|
||||
|
|
@ -36,8 +36,8 @@ A10) What is the bash `posix mode'?
|
|||
|
||||
Section B: The latest version
|
||||
|
||||
B1) What's new in version 2.05a?
|
||||
B2) Are there any user-visible incompatibilities between bash-2.05a and
|
||||
B1) What's new in version 2.05b?
|
||||
B2) Are there any user-visible incompatibilities between bash-2.05b and
|
||||
bash-1.14.7?
|
||||
|
||||
Section C: Differences from other Unix shells
|
||||
|
|
@ -74,6 +74,7 @@ E7) What about empty for loops in Makefiles?
|
|||
E8) Why does the arithmetic evaluation code complain about `08'?
|
||||
E9) Why does the pattern matching expression [A-Z]* match files beginning
|
||||
with every letter except `z'?
|
||||
E10) Why does `cd //' leave $PWD as `//'?
|
||||
|
||||
Section F: Things to watch out for on certain Unix versions
|
||||
|
||||
|
|
@ -86,6 +87,8 @@ F4) I'm running SVR4.2. Why is the line erased every time I type `@'?
|
|||
F5) Why does bash report syntax errors when my C News scripts use a
|
||||
redirection before a subshell command?
|
||||
F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
|
||||
F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
|
||||
HP/UX 11.x?
|
||||
|
||||
Section G: How can I get bash to do certain common things?
|
||||
|
||||
|
|
@ -134,23 +137,23 @@ of Case Western Reserve University.
|
|||
|
||||
A2) What's the latest version?
|
||||
|
||||
The latest version is 2.05a, first made available on Thursday, 15
|
||||
November, 2001.
|
||||
The latest version is 2.05b, first made available on Wednesday, 17
|
||||
July, 2002.
|
||||
|
||||
A3) Where can I get it?
|
||||
|
||||
Bash is the GNU project's shell, and so is available from the
|
||||
master GNU archive site, ftp.gnu.org, and its mirrors. The
|
||||
latest version is also available for FTP from ftp.cwru.edu.
|
||||
The following URLs tell how to get version 2.05a:
|
||||
The following URLs tell how to get version 2.05b:
|
||||
|
||||
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05a.tar.gz
|
||||
ftp://ftp.cwru.edu/pub/bash/bash-2.05a.tar.gz
|
||||
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
|
||||
ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz
|
||||
|
||||
Formatted versions of the documentation are available with the URLs:
|
||||
|
||||
ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05a.tar.gz
|
||||
ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05a.tar.gz
|
||||
ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz
|
||||
ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz
|
||||
|
||||
A4) On what machines will bash run?
|
||||
|
||||
|
|
@ -187,7 +190,7 @@ early GNU-Win32 (the original name) releases. Cygnus has also done a
|
|||
port of bash-2.05 to the CYGWIN environment, and it is available as
|
||||
part of their current release.
|
||||
|
||||
Bash-2.05a should require no local Cygnus changes to build and run under
|
||||
Bash-2.05b should require no local Cygnus changes to build and run under
|
||||
CYGWIN.
|
||||
|
||||
The Cygnus port works only on Intel machines. There is a port of bash
|
||||
|
|
@ -363,6 +366,10 @@ available on the web at
|
|||
|
||||
http://www.opengroup.org/onlinepubs/007908799/
|
||||
|
||||
The Single Unix Specification, version 3, is available on the web at
|
||||
|
||||
http://www.opengroup.org/onlinepubs/007904975/
|
||||
|
||||
A10) What is the bash `posix mode'?
|
||||
|
||||
Although bash is an implementation of the POSIX.2 shell
|
||||
|
|
@ -370,29 +377,61 @@ specification, there are areas where the bash default behavior
|
|||
differs from that spec. The bash `posix mode' changes the bash
|
||||
behavior in these areas so that it obeys the spec more closely.
|
||||
|
||||
Posix mode is entered by starting bash with the --posix option or
|
||||
executing `set -o posix' after bash is running.
|
||||
Posix mode is entered by starting bash with the --posix or
|
||||
'-o posix' option or executing `set -o posix' after bash is running.
|
||||
|
||||
The specific aspects of bash which change when posix mode is
|
||||
active are listed in the file CWRU/POSIX.NOTES in the bash
|
||||
distribution. They are also listed in a section in the Bash
|
||||
Reference Manual.
|
||||
active are listed in the file POSIX in the bash distribution.
|
||||
They are also listed in a section in the Bash Reference Manual
|
||||
(from which that file is generated).
|
||||
|
||||
Section B: The latest version
|
||||
|
||||
B1) What's new in version 2.05a?
|
||||
B1) What's new in version 2.05b?
|
||||
|
||||
The raison d'etre for bash-2.05a is to make an intermediate release
|
||||
containing principally bug fixes (some very good work was done and
|
||||
contributed after bash-2.05 was released) available before I start to
|
||||
work on the major new features to be available in the next release
|
||||
(bash-2.06 or bash-3.0 or whatever I tag it). As such, there are
|
||||
only a few relatively minor new features.
|
||||
The raison d'etre for bash-2.05b is to make a second intermediate
|
||||
release containing the first of the new features to be available
|
||||
in bash-3.0 and get feedback on those features before proceeding.
|
||||
The major new feature is multibyte character support in both Bash
|
||||
and Readline.
|
||||
|
||||
Bash-2.05a contains the following new features (see the manual page for
|
||||
complete descriptions and the CHANGES and NEWS files in the bash-2.05a
|
||||
Bash-2.05b contains the following new features (see the manual page for
|
||||
complete descriptions and the CHANGES and NEWS files in the bash-2.05b
|
||||
distribution):
|
||||
|
||||
o support for multibyte characters has been added to both bash and readline
|
||||
|
||||
o the DEBUG trap is now run *before* simple commands, ((...)) commands,
|
||||
[[...]] conditional commands, and for ((...)) loops
|
||||
|
||||
o the shell now performs arithmetic in the largest integer size the machine
|
||||
supports (intmax_t)
|
||||
|
||||
o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
|
||||
and inserts the result into the expanded prompt
|
||||
|
||||
o there is a new `here-string' redirection operator: <<< word
|
||||
|
||||
o when displaying variables, function attributes and definitions are shown
|
||||
separately, allowing them to be re-used as input (attempting to re-use
|
||||
the old output would result in syntax errors).
|
||||
|
||||
o `read' has a new `-u fd' option to read from a specified file descriptor
|
||||
|
||||
o the bash debugger in examples/bashdb has been modified to work with the
|
||||
new DEBUG trap semantics, the command set has been made more gdb-like,
|
||||
and the changes to $LINENO make debugging functions work better
|
||||
|
||||
o the expansion of $LINENO inside a shell function is only relative to the
|
||||
function start if the shell is interactive -- if the shell is running a
|
||||
script, $LINENO expands to the line number in the script. This is as
|
||||
POSIX-2001 requires
|
||||
|
||||
|
||||
A short feature history dating from Bash-2.0:
|
||||
|
||||
Bash-2.05a introduced the following new features:
|
||||
|
||||
o The `printf' builtin has undergone major work
|
||||
|
||||
o There is a new read-only `shopt' option: login_shell, which is set by
|
||||
|
|
@ -418,8 +457,6 @@ o Readline can be configured to place the user at the same point on the line
|
|||
o Readline can be configured to skip `hidden' files (filenames with a leading
|
||||
`.' on Unix) when performing completion
|
||||
|
||||
A short feature history dating from bash-2.0:
|
||||
|
||||
Bash-2.05 introduced the following new features:
|
||||
|
||||
o This version has once again reverted to using locales and strcoll(3) when
|
||||
|
|
@ -570,13 +607,13 @@ grammar tighter and smaller (66 reduce-reduce conflicts gone)
|
|||
lots of code now smaller and faster
|
||||
test suite greatly expanded
|
||||
|
||||
B2) Are there any user-visible incompatibilities between bash-2.05a and
|
||||
B2) Are there any user-visible incompatibilities between bash-2.05b and
|
||||
bash-1.14.7?
|
||||
|
||||
There are a few incompatibilities between version 1.14.7 and version 2.05a.
|
||||
They are detailed in the file COMPAT in the bash-2.05a distribution. That
|
||||
file is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
|
||||
if you find something that's not mentioned there.
|
||||
There are a few incompatibilities between version 1.14.7 and version 2.05b.
|
||||
They are detailed in the file COMPAT in the bash distribution. That file
|
||||
is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
|
||||
if if you find something that's not mentioned there.
|
||||
|
||||
Section C: Differences from other Unix shells
|
||||
|
||||
|
|
@ -589,6 +626,7 @@ completely.
|
|||
Things bash has that sh does not:
|
||||
long invocation options
|
||||
[+-]O invocation option
|
||||
-l invocation option
|
||||
`!' reserved word to invert pipeline return value
|
||||
`time' reserved word to time pipelines and shell builtins
|
||||
the `function' reserved word
|
||||
|
|
@ -601,7 +639,7 @@ Things bash has that sh does not:
|
|||
the ${#param} parameter value length operator
|
||||
the ${!param} indirect parameter expansion operator
|
||||
the ${!param*} prefix expansion operator
|
||||
the ${param:length[:offset]} parameter substring operator
|
||||
the ${param:offset[:length]} parameter substring operator
|
||||
the ${param/pat[/string]} parameter pattern substitution operator
|
||||
expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
|
||||
expansion of positional parameters beyond $9 with ${num}
|
||||
|
|
@ -616,18 +654,18 @@ Things bash has that sh does not:
|
|||
DEBUG trap
|
||||
ERR trap
|
||||
variable arrays with new compound assignment syntax
|
||||
redirections: <>, &>, >|
|
||||
redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
|
||||
prompt string special char translation and variable expansion
|
||||
auto-export of variables in initial environment
|
||||
command search finds functions before builtins
|
||||
bash return builtin will exit a file sourced with `.'
|
||||
builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -p/-t.
|
||||
builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
|
||||
export -n/-f/-p/name=value, pwd -L/-P,
|
||||
read -e/-p/-a/-t/-n/-d/-s,
|
||||
read -e/-p/-a/-t/-n/-d/-s/-u,
|
||||
readonly -a/-f/name=value, trap -l, set +o,
|
||||
set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
|
||||
unset -f/-v, ulimit -m/-p/-u,
|
||||
type -a/-p/-t, suspend -f, kill -n,
|
||||
type -a/-p/-t/-f/-P, suspend -f, kill -n,
|
||||
test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
|
||||
bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
|
||||
bash restricted shell mode is more extensive
|
||||
|
|
@ -690,15 +728,17 @@ C2) How does bash differ from the Korn shell, version ksh88?
|
|||
Things bash has or uses that ksh88 does not:
|
||||
long invocation options
|
||||
[-+]O invocation option
|
||||
-l invocation option
|
||||
`!' reserved word
|
||||
arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
|
||||
arithmetic in largest machine-supported size (intmax_t)
|
||||
posix mode and posix conformance
|
||||
command hashing
|
||||
tilde expansion for assignment statements that look like $PATH
|
||||
process substitution with named pipes if /dev/fd is not available
|
||||
the ${!param} indirect parameter expansion operator
|
||||
the ${!param*} prefix expansion operator
|
||||
the ${param:length[:offset]} parameter substring operator
|
||||
the ${param:offset[:length]} parameter substring operator
|
||||
the ${param/pat[/string]} parameter pattern substitution operator
|
||||
variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
|
||||
TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
|
||||
|
|
@ -707,7 +747,7 @@ Things bash has or uses that ksh88 does not:
|
|||
PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
|
||||
GROUPS, FUNCNAME, histchars, auto_resume
|
||||
prompt expansion with backslash escapes and command substitution
|
||||
redirection: &> (stdout and stderr)
|
||||
redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
|
||||
more extensive and extensible editing and programmable completion
|
||||
builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
|
||||
exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
|
||||
|
|
@ -727,6 +767,7 @@ Things bash has or uses that ksh88 does not:
|
|||
`**' arithmetic operator to do exponentiation
|
||||
redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
|
||||
arrays of unlimited size
|
||||
TMOUT is default timeout for `read' and `select'
|
||||
|
||||
Things ksh88 has or uses that bash does not:
|
||||
tracked aliases (alias -t)
|
||||
|
|
@ -736,7 +777,7 @@ Things ksh88 has or uses that bash does not:
|
|||
typeset +f to list all function names without definitions
|
||||
text of command history kept in a file, not memory
|
||||
builtins: alias -x, cd old new, fc -e -, newgrp, print,
|
||||
read -p/-s/-u/var?prompt, set -A/-o gmacs/
|
||||
read -p/-s/var?prompt, set -A/-o gmacs/
|
||||
-o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s,
|
||||
typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
|
||||
using environment to pass attributes of exported variables
|
||||
|
|
@ -754,7 +795,7 @@ Implementation differences:
|
|||
|
||||
C3) Which new features in ksh-93 are not in bash, and which are?
|
||||
|
||||
New things in ksh-93 not in bash-2.05a:
|
||||
New things in ksh-93 not in bash-2.05b:
|
||||
associative arrays
|
||||
floating point arithmetic and variables
|
||||
math library functions
|
||||
|
|
@ -775,15 +816,14 @@ New things in ksh-93 not in bash-2.05a:
|
|||
exit statuses between 0 and 255
|
||||
set -o pipefail
|
||||
`+=' variable assignment operator
|
||||
TMOUT is default timeout for `read' and `select'
|
||||
<&N- and >&N- redirections (combination dup and close)
|
||||
FPATH and PATH mixing
|
||||
getopts -a
|
||||
-I invocation option
|
||||
DEBUG trap now executed before each simple command, instead of after
|
||||
printf %H, %P, %T, %Z modifiers, output base for %d
|
||||
|
||||
New things in ksh-93 present in bash-2.05a:
|
||||
New things in ksh-93 present in bash-2.05b:
|
||||
[n]<&word- and [n]>&word- redirections (combination dup and close)
|
||||
for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
|
||||
?:, ++, --, `expr1 , expr2' arithmetic operators
|
||||
expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
|
||||
|
|
@ -980,7 +1020,7 @@ ksh-93 feature Bash equivalent
|
|||
sleep, getconf Bash has loadable versions in examples/loadables
|
||||
${.sh.version} $BASH_VERSION
|
||||
print -f printf
|
||||
hist alias fc=hist
|
||||
hist alias hist=fc
|
||||
$HISTEDIT $FCEDIT
|
||||
|
||||
Section E: How can I get bash to do certain things, and why does bash do
|
||||
|
|
@ -1139,7 +1179,7 @@ configure with the --enable-xpg-echo-default option to turn this
|
|||
on. Be aware that this will cause some of the tests run when you
|
||||
type `make tests' to fail.
|
||||
|
||||
There is a shell option, `xpg_echo', settable with `shopt' that will
|
||||
There is a shell option, `xpg_echo', settable with `shopt', that will
|
||||
change the behavior of echo at runtime. Enabling this option turns
|
||||
on expansion of backslash-escape sequences.
|
||||
|
||||
|
|
@ -1215,10 +1255,9 @@ http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
|
|||
E9) Why does the pattern matching expression [A-Z]* match files beginning
|
||||
with every letter except `z'?
|
||||
|
||||
Bash-2.05 and later versions have reverted to the bash-2.03 behavior of
|
||||
honoring the current locale setting when processing ranges within pattern
|
||||
matching bracket expressions ([A-Z]). This is what POSIX.2 and SUSv2/XPG5
|
||||
specify.
|
||||
Bash-2.03, Bash-2.05 and later versions honor the current locale setting
|
||||
when processing ranges within pattern matching bracket expressions ([A-Z]).
|
||||
This is what POSIX.2 and SUSv3/XPG6 specify.
|
||||
|
||||
The behavior of the matcher in bash-2.05 and later versions depends on the
|
||||
current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will
|
||||
|
|
@ -1229,7 +1268,11 @@ this:
|
|||
|
||||
AaBb...Zz
|
||||
|
||||
which means that [A-Z] matches every letter except `z'.
|
||||
which means that [A-Z] matches every letter except `z'. Others collate like
|
||||
|
||||
aAbBcC...zZ
|
||||
|
||||
which means that [A-Z] matches every letter except `a'.
|
||||
|
||||
The portable way to specify upper case letters is [:upper:] instead of
|
||||
A-Z; lower case may be specified as [:lower:] instead of a-z.
|
||||
|
|
@ -1252,6 +1295,16 @@ from removing every file in the current directory except those beginning
|
|||
with `z' and still allow individual users to change the collation order.
|
||||
Users may put the above command into their own profiles as well, of course.
|
||||
|
||||
E10) Why does `cd //' leave $PWD as `//'?
|
||||
|
||||
POSIX.2, in its description of `cd', says that *three* or more leading
|
||||
slashes may be replaced with a single slash when canonicalizing the
|
||||
current working directory.
|
||||
|
||||
This is, I presume, for historical compatibility. Certain versions of
|
||||
Unix, and early network file systems, used paths of the form
|
||||
//hostname/path to access `path' on server `hostname'.
|
||||
|
||||
Section F: Things to watch out for on certain Unix versions
|
||||
|
||||
F1) Why can't I use command line editing in my `cmdtool'?
|
||||
|
|
@ -1386,6 +1439,21 @@ to the beginning of /etc/inputrc, or bracket the key bindings in
|
|||
[...]
|
||||
$endif
|
||||
|
||||
F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
|
||||
HP/UX 11.x?
|
||||
|
||||
HP/UX's support for long double is imperfect at best.
|
||||
|
||||
GCC will support it without problems, but the HP C library functions
|
||||
like strtold(3) and printf(3) don't actually work with long doubles.
|
||||
HP implemented a `long_double' type as a 4-element array of 32-bit
|
||||
ints, and that is what the library functions use. The ANSI C
|
||||
`long double' type is a 128-bit floating point scalar.
|
||||
|
||||
The easiest fix, until HP fixes things up, is to edit the generated
|
||||
config.h and #undef the HAVE_LONG_DOUBLE line. After doing that,
|
||||
the compilation should complete successfully.
|
||||
|
||||
Section G: How can I get bash to do certain common things?
|
||||
|
||||
G1) How can I get bash to read and display eight-bit characters?
|
||||
|
|
@ -1607,11 +1675,8 @@ H3) What's coming in future versions?
|
|||
|
||||
These are features I hope to include in a future version of bash.
|
||||
|
||||
a better bash debugger (a minimally-tested version is included with bash-2.05a)
|
||||
a better bash debugger (a minimally-tested version is included with bash-2.05b)
|
||||
associative arrays
|
||||
changes to the DEBUG trap to be compatible with ksh93 (which runs the
|
||||
trap before each simple command, instead of after each one like previous
|
||||
versions)
|
||||
co-processes, but with a new-style syntax that looks like function declaration
|
||||
|
||||
H4) What's on the bash `wish list' for future versions?
|
||||
|
|
@ -1621,7 +1686,6 @@ These are features that may or may not appear in a future version of bash.
|
|||
breaking some of the shell functionality into embeddable libraries
|
||||
a module system like zsh's, using dynamic loading like builtins
|
||||
better internationalization using GNU `gettext'
|
||||
an option to use external files for the long `help' text
|
||||
date-stamped command history
|
||||
a bash programmer's guide with a chapter on creating loadable builtins
|
||||
a better loadable interface to perl with access to the shell builtins and
|
||||
|
|
@ -1637,7 +1701,7 @@ H5) When will the next release appear?
|
|||
The next version will appear sometime in 2002. Never make predictions.
|
||||
|
||||
|
||||
This document is Copyright 1995-2001 by Chester Ramey.
|
||||
This document is Copyright 1995-2002 by Chester Ramey.
|
||||
|
||||
Permission is hereby granted, without written agreement and
|
||||
without license or royalty fees, to use, copy, and distribute
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue