| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | Platform-Specific Configuration and Operation Notes | 
					
						
							|  |  |  | =================================================== | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 1.  configure --without-gnu-malloc on: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 14:37:54 +00:00
										 |  |  | 	alpha running OSF/1, Linux, or NetBSD (malloc needs 8-byte alignment; | 
					
						
							|  |  |  | 	bash malloc has 8-byte alignment now, but I have no alphas to test on) | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	next running NeXT/OS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 14:37:54 +00:00
										 |  |  | 	all machines running SunOS YP code: SunOS4, SunOS5, HP/UX, if you | 
					
						
							|  |  |  | 	have problems with username completion or tilde expansion for | 
					
						
							|  |  |  | 	usernames found via YP/NIS | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | 	linux (optional, but don't do it if you're using Doug Lea's malloc) | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	QNX 4.2 | 
					
						
							|  |  |  | 	other OSF/1 machines (KSR/1, HP, IBM AIX/ESA) | 
					
						
							|  |  |  | 	AIX | 
					
						
							|  |  |  | 	sparc SVR4, SVR4.2 (ICL reference port) | 
					
						
							|  |  |  | 	DG/UX | 
					
						
							|  |  |  | 	Cray | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 14:37:54 +00:00
										 |  |  | 	NetBSD/sparc (malloc needs 8-byte alignment; bash malloc has 8-byte | 
					
						
							|  |  |  | 	alignment now, but I have no NetBSD machines to test on) | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 14:37:54 +00:00
										 |  |  | 	BSD/OS 2.1, 3.x if you want to use loadable builtins | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-17 21:46:59 +00:00
										 |  |  | 	Motorola m68k machines running System V.3.  There is a file descriptor | 
					
						
							|  |  |  | 	leak caused by using the bash malloc because closedir(3) needs to read | 
					
						
							|  |  |  | 	freed memory to find the file descriptor to close | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 14:37:54 +00:00
										 |  |  | 2.  Configure using shlicc2 on BSD/OS 2.1 and BSD/OS 3.x to use loadable | 
					
						
							|  |  |  |     builtins | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 3.  Bash cannot be built in a directory separate from the source directory | 
					
						
							|  |  |  |     using configure --srcdir=... unless the version of `make' you're using | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  |     does $VPATH handling right.  The script support/mkclone can be used to | 
					
						
							|  |  |  |     create a `build tree' using symlinks to get around this. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  I've had reports that username completion (as well as tilde expansion | 
					
						
							|  |  |  |     and \u prompt expansion) does not work on IRIX 5.3 when linking with | 
					
						
							|  |  |  |     -lnsl.  This is only a problem when you're running NIS, since | 
					
						
							|  |  |  |     apparently -lnsl supports only /etc/passwd and not the NIS functions | 
					
						
							|  |  |  |     for retrieving usernames and passwords.  Editing the Makefile after | 
					
						
							|  |  |  |     configure runs and removing the `-lnsl' from the assignment to `LIBS' | 
					
						
							|  |  |  |     fixes the problem. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | 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: | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /usr/sbin/makewhatis: cd: manpath: No such file or directory | 
					
						
							|  |  |  |     /usr/sbin/makewhatis: manpath/whatis: No such file or directory | 
					
						
							|  |  |  |     chmod: manpath/whatis: No such file or directory | 
					
						
							|  |  |  |     /usr/sbin/makewhatis: cd: catpath: No such file or directory | 
					
						
							|  |  |  |     /usr/sbin/makewhatis: catpath/whatis: No such file or directory | 
					
						
							|  |  |  |     chmod: catpath/whatis: No such file or directory | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The problem is with `makewhatis'.  Red Hat (and possibly other | 
					
						
							|  |  |  |     Linux distributors) uses a construct like this in the code: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         eval path=$"$pages"path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     to do indirect variable expansion.  This `happened to work' in | 
					
						
							|  |  |  |     bash-1.14 and previous versions, but that was more an accident | 
					
						
							|  |  |  |     of implementation than anything else -- it was never supported | 
					
						
							|  |  |  |     and certainly is not portable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Bash-2.0 has a new feature that gives a new meaning to $"...". | 
					
						
							|  |  |  |     This is explained more completely in item 1 in the COMPAT file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The three lines in the `makewhatis' script that need to be changed | 
					
						
							|  |  |  |     look like this: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |              eval $topath=$"$topath":$name | 
					
						
							|  |  |  |     [...] | 
					
						
							|  |  |  |        eval path=$"$pages"path | 
					
						
							|  |  |  |     [...] | 
					
						
							|  |  |  |     eval path=$"$pages"path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The portable way to write this code is | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |              eval $topath="\$$topath":$name | 
					
						
							|  |  |  |        eval path="\$$pages"path | 
					
						
							|  |  |  |     eval path="\$$pages"path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     You could also experiment with another new bash feature: ${!var}. | 
					
						
							|  |  |  |     This does indirect variable expansion, making the use of eval | 
					
						
							|  |  |  |     unnecessary. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 6.  There is a problem with syslogd on many Linux distributions (Red Hat | 
					
						
							|  |  |  |     and Slackware are two that I have received reports about).  syslogd | 
					
						
							|  |  |  |     sends a SIGINT to its parent process, which is waiting for the daemon | 
					
						
							|  |  |  |     to finish its initialization.  The parent process then dies due to | 
					
						
							|  |  |  |     the SIGINT, and bash reports it, causing unexpected console output | 
					
						
							|  |  |  |     while the system is booting that looks something like | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	starting daemons: syslogd/etc/rc.d/rc.M: line 29: 38 Interrupt ${NET}/syslogd | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Bash-2.0 reports events such as processes dying in scripts due to | 
					
						
							|  |  |  |     signals when the standard output is a tty.  Bash-1.14.x and previous | 
					
						
							|  |  |  |     versions did not report such events. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This should probably be reported as a bug to whatever Linux distributor | 
					
						
							|  |  |  |     people see the problem on.  In my opinion, syslogd should be changed to | 
					
						
							|  |  |  |     use some other method of communication, or the wrapper function (which | 
					
						
							|  |  |  |     appeared to be `daemon' when I looked at it some time ago) or script | 
					
						
							|  |  |  |     (which appeared to be `syslog') should catch SIGINT, since it's an | 
					
						
							|  |  |  |     expected event, and exit cleanly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 7.  Several people have reported that `dip' (a program for SLIP/PPP | 
					
						
							|  |  |  |     on Linux) does not work with bash-2.0 installed as /bin/sh. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     I don't run any Linux boxes myself, and do not have the dip | 
					
						
							|  |  |  |     code handy to look at, but the `problem' with bash-2.0, as | 
					
						
							|  |  |  |     it has been related to me, is that bash requires the `-p' | 
					
						
							|  |  |  |     option to be supplied at invocation if it is to run setuid | 
					
						
							|  |  |  |     or setgid.  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This means, among other things, that setuid or setgid programs | 
					
						
							|  |  |  |     which call system(3) (a horrendously bad practice in any case) | 
					
						
							|  |  |  |     relinquish their setuid/setgid status in the child that's forked | 
					
						
							|  |  |  |     to execute /bin/sh.  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The following is an *unofficial* patch to bash-2.0 that causes it | 
					
						
							|  |  |  |     to not require `-p' to run setuid or setgid if invoked as `sh'. | 
					
						
							|  |  |  |     It has been reported to work on Linux.  It will make your system | 
					
						
							|  |  |  |     vulnerable to bogus system(3) calls in setuid executables. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | --- ../bash-2.0.orig/shell.c    Wed Dec 18 14:16:30 1996 | 
					
						
							|  |  |  | +++ shell.c     Fri Mar  7 13:12:03 1997 | 
					
						
							|  |  |  | @@ -347,7 +347,7 @@ | 
					
						
							|  |  |  |    if (posixly_correct) | 
					
						
							|  |  |  |      posix_initialize (posixly_correct); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -  if (running_setuid && privileged_mode == 0) | 
					
						
							|  |  |  | +  if (running_setuid && privileged_mode == 0 && act_like_sh == 0) | 
					
						
							|  |  |  |      disable_priv_mode (); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    /* Need to get the argument to a -c option processed in the | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-17 19:52:44 +00:00
										 |  |  | 8.  Some people have asked about binding all of the keys in a PC-keyboard- | 
					
						
							|  |  |  |     style numeric keypad to readline functions.  Here's something I | 
					
						
							|  |  |  |     received from the gnu-win32 list that may help.  Insert the following | 
					
						
							|  |  |  |     lines into ~/.inputrc: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # home key | 
					
						
							|  |  |  | "\e[1~":beginning-of-line | 
					
						
							|  |  |  | # insert key | 
					
						
							|  |  |  | "\e[2~":kill-whole-line | 
					
						
							|  |  |  | # del key | 
					
						
							|  |  |  | "\e[3~":delete-char | 
					
						
							|  |  |  | # end key | 
					
						
							|  |  |  | "\e[4~":end-of-line | 
					
						
							|  |  |  | # pgup key | 
					
						
							|  |  |  | "\e[5~":history-search-forward | 
					
						
							|  |  |  | # pgdn key | 
					
						
							|  |  |  | "\e[6~":history-search-backward | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 9.  Hints for building under Minix 2.0 (Contributed by Terry R. McConnell, | 
					
						
							|  |  |  |     <tmc@barnyard.syr.edu>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The version of /bin/sh distributed with Minix is not up to the job of | 
					
						
							|  |  |  |    running the configure script. The easiest solution is to swap /bin/sh | 
					
						
							|  |  |  |    with /usr/bin/ash. Then use chmem(1) to increase the memory allocated | 
					
						
							|  |  |  |    to /bin/sh. The following settings are known to work: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    text         data     bss   stack  memory | 
					
						
							|  |  |  |    63552  9440          3304   65536  141832  /bin/sh | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    If you have problems with make or yacc it may be worthwhile first to | 
					
						
							|  |  |  |    install the GNU versions of these utilities before attempting to build | 
					
						
							|  |  |  |    bash. (As of this writing, all of these utilities are available for the | 
					
						
							|  |  |  |    i386 as pre-built binaries via anonymous ftp at math.syr.edu in the | 
					
						
							|  |  |  |    pub/mcconnell/minix directory. Note that the GNU version of yacc is called | 
					
						
							|  |  |  |    bison.) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Unless you want to see lots of warnings about old-style declarations, | 
					
						
							|  |  |  |    do LOCAL_CFLAGS=-wo; export LOCAL_CFLAGS before running configure. | 
					
						
							|  |  |  |    (These warnings are harmless, but annoying.) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    configure will insist that you supply a host type. For example, do | 
					
						
							|  |  |  |    ./configure --host=i386-pc-minix. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Minix does not support the system calls required for a proper  | 
					
						
							|  |  |  |    implementation of ulimit().  The `ulimit' builtin will not be available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Configure will fail to notice that many things like uid_t are indeed | 
					
						
							|  |  |  |    typedef'd in <sys/types.h>, because it uses egrep for this purpose | 
					
						
							|  |  |  |    and minix has no egrep. You could try making a link /usr/bin/egrep --> | 
					
						
							|  |  |  |    /usr/bin/grep. Better is to install the GNU version of grep in | 
					
						
							|  |  |  |    /usr/local/bin and make the link /usr/local/bin/egrep -->/usr/local/bin/grep. | 
					
						
							|  |  |  |    (These must be hard links, of course, since Minix does not support | 
					
						
							|  |  |  |    symbolic links.) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    You will see many warnings of the form: | 
					
						
							|  |  |  |    warning: unknown s_type: 98 | 
					
						
							|  |  |  |    I have no idea what this means, but it doesn't seem to matter. | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 10. If you do not have /usr/ccs/bin in your PATH when building on SunOS 5.x | 
					
						
							|  |  |  |     (Solaris 2), the configure script will be unable to find `ar' and | 
					
						
							|  |  |  |     `ranlib' (of course, ranlib is unnecessary).  Make sure your $PATH | 
					
						
							| 
									
										
										
										
											2000-03-17 21:46:59 +00:00
										 |  |  |     includes /usr/ccs/bin on SunOS 5.x.  This generally manifests itself | 
					
						
							|  |  |  |     with libraries not being built and make reporting errors like | 
					
						
							|  |  |  |     `cr: not found' when library construction is attempted. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  | 11. Building a statically-linked bash on Solaris 2.5.x, 2.6, 7, or 8 is | 
					
						
							| 
									
										
										
										
											2000-03-17 21:46:59 +00:00
										 |  |  |     complicated. | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     It's not possible to build a completely statically-linked binary, since | 
					
						
							|  |  |  |     part of the C library depends on dynamic linking.  The following recipe | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  |     assumes that you're using gcc and the Solaris ld (/usr/ccs/bin/ld) on | 
					
						
							|  |  |  |     Solaris 2.5.x or 2.6: | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	configure --enable-static-link | 
					
						
							|  |  |  | 	make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -ldl -Wl,-B,static' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This should result in a bash binary that depends only on libdl.so: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	thor(2)$ ldd bash | 
					
						
							|  |  |  | 	        libdl.so.1 =>    /usr/lib/libdl.so.1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     If you're using the Sun C Compiler (Sun WorkShop C Compiler version | 
					
						
							|  |  |  |     4.2 was what I used), you should be able to get away with using | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	configure --enable-static-link | 
					
						
							|  |  |  | 	make STATIC_LD=  LOCAL_LIBS='-B dynamic -ldl -B static' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     If you want to completely remove any dependence on /usr, perhaps | 
					
						
							|  |  |  |     to put a copy of bash in /sbin and have it available when /usr is | 
					
						
							| 
									
										
										
										
											2002-07-17 14:10:11 +00:00
										 |  |  |     not mounted, force the build process to use the shared dl.so library | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  |     in /etc/lib. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     For gcc, this would be something like | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	configure --enable-static-link | 
					
						
							|  |  |  | 	make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -Wl,-R/etc/lib -ldl -Wl,-B,static' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     For Sun's WS4.2 cc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	configure --enable-static-link | 
					
						
							|  |  |  | 	make STATIC_LD=  LOCAL_LIBS='-B dynamic -R/etc/lib -ldl -B static' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     seems to work, at least on Solaris 2.5.1: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	thor(2)$ ldd bash | 
					
						
							|  |  |  | 	        libdl.so.1 =>    /etc/lib/libdl.so.1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  |     On Solaris 7 (Solaris 8, using the version of gcc on the free software | 
					
						
							|  |  |  |     CD-ROM), the following recipe appears to work for gcc: | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	configure --enable-static-link | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  | 	make STATIC_LD='-Wl,-Bstatic' LOCAL_LIBS='-Wl,-Bdynamic -Wl,-R/etc/lib -ldl -Wl,-Bstatic' | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  |     I have received word that adding -L/etc/lib (or the equivalent | 
					
						
							|  |  |  |     -Wl,-L/etc/lib) might also be necessary, in addition to the -R/etc/lib. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-10 14:15:34 +00:00
										 |  |  |     On later versions of Solaris, it may be necessary to add -lnsl before | 
					
						
							|  |  |  |     -ldl; statically-linked versions of bash using libnsl are not guaranteed | 
					
						
							|  |  |  |     to work correctly on future versions of Solaris. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  | 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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	export RANLIB=i586-beos-ranlib | 
					
						
							|  |  |  | 	export AR=i586-beos-ar | 
					
						
							|  |  |  | 	export CC=i586-beos-gcc | 
					
						
							|  |  |  | 	configure i586-beos | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Similarly for cygwin32. | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  | 14. Building on Interix (nee OpenNT), which Microsoft bought from Softway | 
					
						
							|  |  |  |     Systems and has seemingly abandoned (thanks to Kevin Moore for this item). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	1.  cp cross-build/opennt.cache config.cache | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	2.  If desired, edit pathnames.h to set the values of SYS_PROFILE and | 
					
						
							|  |  |  | 	    DEFAULT_HOSTS_FILE appropriately. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	3.  export CONFIG_SHELL=$INTERIX_ROOT/bin/sh | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	4.  ./configure --prefix=$INTERIX_ROOT/usr/local (or wherever you | 
					
						
							|  |  |  | 	    want it). | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  | 	5. make; make install; enjoy | 
					
						
							| 
									
										
										
										
											2002-07-17 14:10:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 15.  Configure with `CC=xlc' if you don't have gcc on AIX 4.2 and later | 
					
						
							|  |  |  |      versions.  `xlc' running in `cc' mode has trouble compiling error.c. | 
					
						
							| 
									
										
										
										
											2004-07-27 13:29:18 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 16.  Configure --disable-multibyte on NetBSD versions (1.4 through at least | 
					
						
							|  |  |  |      1.6.1) that include wctype.h but do not define wctype_t. | 
					
						
							| 
									
										
										
										
											2006-10-10 14:15:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 17.  Do NOT use bison-1.75.  It builds a non-working parser.  The most | 
					
						
							|  |  |  |      obvious effect is that constructs like "for i; do echo $i; done" don't | 
					
						
							|  |  |  |      loop over the positional parameters. | 
					
						
							| 
									
										
										
										
											2009-01-12 13:36:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 18.  I have received reports that using -O2 with the MIPSpro results in a | 
					
						
							|  |  |  |      binary that fails in strange ways.  Using -O1 seems to work. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 19.  There is special handling to ensure the shell links against static | 
					
						
							|  |  |  |      versions of the included readline and history libraries on Mac OS X; | 
					
						
							|  |  |  |      Apple ships inadequate dynamic libreadline and libhistory "replacements" | 
					
						
							|  |  |  |      as standard libraries. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-21 20:51:19 -05:00
										 |  |  | 20.  If you're on a system like SGI Irix, and you get an error about not | 
					
						
							|  |  |  |      being able to refer to a dynamic symbol | 
					
						
							|  |  |  |      (ld: non-dynamic relocations refer to dynamic symbol PC), add | 
					
						
							|  |  |  |      -DNEED_EXTERN_PC to the LOCAL_CFLAGS variable in lib/readline/Makefile.in | 
					
						
							|  |  |  |      and rebuild. |