summaryrefslogtreecommitdiff
path: root/src/cmd/ksh93/README
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/ksh93/README')
-rw-r--r--src/cmd/ksh93/README232
1 files changed, 232 insertions, 0 deletions
diff --git a/src/cmd/ksh93/README b/src/cmd/ksh93/README
new file mode 100644
index 0000000..1feeec8
--- /dev/null
+++ b/src/cmd/ksh93/README
@@ -0,0 +1,232 @@
+This directory, and its subdirectories contain the source code
+for ksh-93; the language described in the second addition of
+the book, "The KornShell Command and Programming Language," by
+Morris Bolsky and David Korn which is published by Prentice Hall.
+ksh-93 has been compiled and run on several machines with several
+operating systems. The end of this file contains a partial list of
+operating systems and machines that ksh-93 has been known to run on.
+
+The layout of files for ksh-93 has changed somewhat since ksh-88,
+the last major release. Most of the source code for ksh remains in
+the sh directory. However, the shell editing and history routines
+are in the edit sub-directory. The code for shell built-ins is
+in the bltins directory. The data directory contains read-only
+data tables and messages that are used by the shell. The include
+files remain in the include directory and the shlib directory
+is gone. The features directory replaces the older install
+directory. The method for generating systems specific feature
+information has changed substantially.
+
+The Makefile file contains several compilation options that can be set
+before compiling ksh. Options are of the form SHOPT_option and become
+#define inside the code. These options are set to their recommended
+value and some of these may disappear as options in future releases.
+A value of 0, or no value represents off, 1 represents on.
+Note that == is needed, not =, because these are nmake state variables
+and changing their value will cause all modules that could be affected
+by this change to be recompiled.
+The options have the following defaults and meanings:
+ ACCT off Shell accounting.
+ ACCTFILE off Enable per user accounting info.
+ AUDIT off For auditing specific users
+ AUDITFILE "/etc/ksh_audit"
+ APPEND on Allows var+=val string and array append.
+ BASH off Bash compatibility mode. It is not fully implemented
+ and is experimental.
+ BRACEPAT on C-shell type abc{d,e}f style file generation
+ CMDLIB_BLTIN off Makes all commands in libcmd.a builtins. The
+ SH_CMDLIB_DIR nmake state variable can be used to
+ specify a directory.
+ CMDLIB_DIR off Sets CMDLIB_BLTIN=1 and provides a default value
+ of "/opt/ast/bin" for SH_CMDLIB_DIR.
+ COMPOUND_ARRAY
+ on Allows all components of compound variables except the
+ first to be any string by enclosing in [...]. It also
+ allows components other than the last to be arrays.
+ This is experimental and only partially complete.
+ CRNL off <cr><nl> treated as <nl> in shell grammar.
+ DYNAMIC on Dynamic loading of builtins. (Requires dlopen() interface.)
+ ECHOPRINT off Make echo equivalent to print.
+ ESH on Compile with emacs command line editing. The original
+ emacs line editor code was provided by Mike Veach at IH.
+ FILESCAN on Experimental option that allows fast reading of files
+ using while < file;do ...; done and allowing fields in
+ each line to be accessed as positional parameters.
+ FS_3D off For use with 3-D file system. Enabled automatically for
+ sytems with dynamic linking.
+ KIA off Allow generation of shell cross reference database with -I.
+ MULTIBYTE on Multibyte character handling. Requires mblen() and
+ mbctowc().
+ NAMESPACE on Allows namespaces. This is experimental, incomplete
+ and undocumented.
+ OLDTERMIO off Use either termios or termio at runtime.
+ OO on Experimental object oriented extension. This option
+ should disappear soon.
+ OPTIMIZE on Optimize loop invariants for with for and while loops.
+ P_SUID off If set, all real uids, greater than or equal to this
+ value will require the -p flag to run suid/sgid scripts.
+ PFSH off Compile with support for profile shell.
+ RAWONLY off Turn on if the vi line mode doesn't work right unless
+ you do a set -o viraw.
+ SEVENBIT off Strip the eigth bit from characters.
+ SPAWN off Use spawn as combined fork/exec. May improve speed on
+ some systems.
+ STATS on Add .sh.stats compound variable.
+ SUID_EXEC on Execute /etc/suid_exec for setuid, setgid script.
+ TIMEOUT off Set this to the number of seconds for timing out and
+ exiting the shell when you don't enter a command. If
+ non-zero, TMOUT can not be set larger than this value.
+ TYPEDEF on Enable typeset type definitions.
+ VSH on Compile with vi command line editing. The original vi
+ line editor code was provided by Pat Sullivan at CB.
+
+The following compile options are set automatically by the feature testing:
+ DEVFD Set when /dev/fd is a directory that names open files.
+ SHELLMAGIC
+ Set on systems that recognize script beginning with #! specially.
+ VPIX Set on systems the have /usr/bin/vpix program for running MS-DOS.
+
+
+In most instances, you will generate ksh from a higher level directory
+which also generates libcmd and libast libraries on which ksh depends.
+However, it is possible to generate ksh, with by running make -f ksh.mk
+in this directory. The ksh.mk file was generated from the nmake Makefile.
+If you do not have make or nmake, but do have a Version 7 UNIX compatible
+shell, then you can run the script mamexec < Mamfile to build ksh.
+If you have nmake, version 2.3 or later, you can use it without the -f ksh.mk.
+In either case, ksh relies on libraries libast and libcmd which must be
+built first. The binary for ksh becomes the file named ./ksh which can
+be copied to where ever you install it.
+
+If you use old make or the Mamfile, and you system has dynamic shared
+libraries, then you should define the variables mam_cc_static and
+mam_cc_dynanamic as the compiler options that request static linking
+and dynamic linking respectively. This will decrease the number of
+shared libraries that ksh need and cut startup time substantially.
+
+The makefile should also generate shcomp, a program that will precompile
+a script. ksh93 is able to recognize files in this format and process
+them as scripts. You can use shcomp to send out scripts when you
+don't want to give away the original script source.
+
+It is advisable that you put the line PWD=$HOME;export PWD into the
+/etc/profile file to reduce initialization time for ksh.
+
+To be able to run setuid/setgid shell scripts, or scripts without read
+permission, the SUID_EXEC compile option must be on, and ksh must be installed
+in the /bin directory, the /usr/bin directory, the /usr/lbin directory,
+or the /usr/local/bin directory and the name must end in sh. The program
+suid_exec must be installed in the /etc directory, must be owned by root,
+and must be a suid program. If you must install ksh in some other directory
+and want to be able to run setuid/setgid and execute only scripts, then
+you will have to change the source code file sh/suid_exec.c explicitly.
+If you do not have ksh in one of these secure locations, /bin/sh will
+be invoked with the -p options and will fail when you execute a setuid/setgid
+and/or execute only script. Note, that ksh does not read the .profile
+or $ENV file when it the real and effective user/group id's are not
+equal.
+
+The tests sub-directory contains a number of regression tests for ksh.
+To run all these tests with the shell you just built, go to the tests
+directory and run the command
+ SHELL=$dir/ksh $dir/ksh shtests
+where dir is the directory of the ksh you want to test.
+
+The file PROMO.mm is an advertisement that extolls the virtues of ksh.
+The file sh.1 contains the troff (man) description of this Shell.
+The file nval.3 contains the troff (man) description of the name-value
+pair library that is needed for writing built-ins that need to
+access shell variables.
+
+The file sh.memo contains a draft troff (mm) memo describing ksh. The
+file RELEASE88 contains the changes made for ksh88. The file RELEASE93
+contains the changes made in this release since ksh-88. The file
+RELEASE contains bug fixes made in this release since ksh-88. The file
+COMPATIBILITY contains a list of incompatibilities with ksh-88. The
+file bltins.mm is a draft troff (mm) memo describing how to write
+built-in commands that can be loaded at run time.
+
+Most of the work for internationalization has been done with ksh93.
+The file ksh.msg is a generated file that contains error messages
+that need to be translated. In addition, the function translate()
+in sh/init.c has to be completed to interface with the dictionary
+lookup. The translate function takes two argument, the string
+that is to be translated and a type which is
+ 0 when a library string needs translation.
+ 1 when one of the error messages in ksh.msg needs translation.
+ 2 when a string in a script needs translation. You use a $ in front
+ of a double quoted string in a script to indicate that it
+ needs translation. The -D option for ksh builds the dictionary.
+The translate routine needs to return the translated message.
+For dictionaries that need to use a numeric key, it should be
+possible to use the strhash() function to generate numbers to
+go along with each of the messages and to use this number both
+when generating the dictionary and when converting strings.
+If you encounter error messages of type 1 that are not be translated via
+this translate() function send mail to the address below.
+
+Please report any problems or suggestions to:
+
+dgk@research.att.com
+
+
+ksh93 has been compiled and alpha tested on the following. An asterisk
+signifies that ksh has been installed as /bin/sh on this machine.
+
+* Sun OS 4.1.[123] on sparc.
+ Sun OS 4.1.1 on sun.
+ Solaris 2.[1-9] on sparc.
+ Solaris 2.[4-8] on X86.
+ HP/UX 8 on HP-9000/730.
+ HP/UX 9 on HP-9000/730.
+ HP/UX 10 on HP-9000/857.
+ HP/UX 11 on pa-risc.
+ System V Release 3 on Counterpoint C19
+ System V Release 4 on AT&T Intel 486.
+ System V Release 4 on NCR 4850 Intel 486.
+ IRIX Release 4.0.? System V on SGI-MIPS.
+ IRIX Release 5.1 System V on SGI-MIPS.
+ IRIX Release 6.[1-5] System V on SGI-MIPS.
+ System V Release 3.2 on 3B2.
+ UTS 5.2.6 on Amdahl 3090,5990,580.
+ System V Release 3.2 on i386.
+ SMP_DC.OSx olivetti dcosx MIServer-S 2/128.
+ SMP_DC.OSx Pyramid dcosx MIServer-S 2/160 r3000.
+ 4.3BSD on Vax 8650.
+ AIX release 2 on RS6000.
+ AIX 3.2 on RS6000.
+ Linux 1.X on Intel
+ Linux 2.X on Intel
+ Linux 2.X on Alpha
+ Linux 2.X on Alpha
+ Linux 2.X on OS/390
+ Linux 2.X on sparc
+ Linux 2.4 on intel itanium 64
+ Linux Slackware on sparc64
+* Linux ARM on i-PAQ
+ OSF1 on DEC alpha.
+ OSF4 on DEC alpha.
+ UMIPS 4.52 on mips.
+ BSD-i [2-4] on X86.
+ OpenBSD on X86
+ NetBSD on X86
+ FreeBSD on X86
+ NeXT on Intel X86.
+ NeXT on HP.
+* Windows NT using UWIN on X86
+* Windows NT using UWIN on alpha
+ Windows NT using Cygwin on X86
+ Windows NT with NutCracker libraries.
+ Windows NT with Portage libraries.
+ Windows 3.1 using custom C library.
+ OpenEdition on MVS
+ Darwin OS X on PPC
+ MVS on OS 390
+ SCO Openserver 3.2 on X86
+ Unixware 7 on X86
+
+Good luck!!
+
+David Korn
+dgk@research.att.com
+