]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - NOTES
Imported from ../bash-2.05.tar.gz.
[thirdparty/bash.git] / NOTES
diff --git a/NOTES b/NOTES
index 2ce96143ffd7a550f268b2bfa1a5b942046da0df..69bb6aea1f067bf80ce5ff14f0dafb16e85d8c23 100644 (file)
--- a/NOTES
+++ b/NOTES
@@ -51,9 +51,9 @@ being built and linked against, but there is only a stub file in the archive.)
     configure runs and removing the `-lnsl' from the assignment to `LIBS'
     fixes the problem.
 
-5.  There is a problem with Red Hat Linux's `makewhatis' script.
-    Running `makewhatis' with bash-2.0 or later versions results
-    in error messages like this:
+5.  There is a problem with the `makewhatis' script in older (pre-7.0)
+    versions of Red Hat Linux.  Running `makewhatis' with bash-2.0 or
+    later versions results in error messages like this:
 
     /usr/sbin/makewhatis: cd: manpath: No such file or directory
     /usr/sbin/makewhatis: manpath/whatis: No such file or directory
@@ -215,7 +215,8 @@ being built and linked against, but there is only a stub file in the archive.)
 
     It's not possible to build a completely statically-linked binary, since
     part of the C library depends on dynamic linking.  The following recipe
-    assumes that you're using gcc and the Solaris ld (/usr/ccs/bin/ld).
+    assumes that you're using gcc and the Solaris ld (/usr/ccs/bin/ld) on
+    Solaris 2.5.x or 2.6:
 
        configure --enable-static-link
        make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -ldl -Wl,-B,static'
@@ -251,6 +252,17 @@ being built and linked against, but there is only a stub file in the archive.)
        thor(2)$ ldd bash
                libdl.so.1 =>    /etc/lib/libdl.so.1
 
+    On Solaris 7 (and presumably Solaris 8, though I do not run that), the
+    following recipe appears to work for gcc:
+
+       configure --enable-static-link
+       make STATIC_LD='-Wl,-Bstatic' LOCAL_LIBS='Wl,-Bdynamic -Wl,-R/etc/lib -ldl -Wl,-Bstatic'
+
+       thor.ins.cwru.edu(2)$ ldd bash
+               libdl.so.1 =>    /etc/lib/libdl.so.1
+
+    Make the analogous changes if you are running Sun's C Compiler.
+
 12. Configuring bash to build it in a cross environment.  Currently only
     two native versions can be compiled this way, cygwin32 and x86 BeOS.
     For BeOS, you would configure it like this:
@@ -261,3 +273,40 @@ being built and linked against, but there is only a stub file in the archive.)
        configure i586-beos
 
     Similarly for cygwin32.
+
+13. Bash-2.05 has 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 specify.
+
+    The behavior of the matcher in bash-2.05 depends on the current LC_COLLATE
+    setting.  Setting this variable to `C' or `POSIX' will result in the
+    traditional behavior ([A-Z] matches all uppercase ASCII characters).
+    Many other locales, including the en_US locale (the default on many US
+    versions of Linux) collate the upper and lower case letters like this:
+
+       AaBb...Zz
+
+    which means that [A-Z] matches every letter except `z'.
+
+    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.
+
+    Look at the manual pages for setlocale(3), strcoll(3), and, if it is
+    present, locale(1).  If you have locale(1), you can use it to find
+    your current locale information even if you do not have any of the
+    LC_ variables set.
+
+    My advice is to put
+
+        export LC_COLLATE=C
+
+    into /etc/profile and inspect any shell scripts run from cron for
+    constructs like [A-Z].  This will prevent things like
+
+       rm [A-Z]*
+
+    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.
+
+