mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-15 04:32:24 +00:00
ksh93/README updates
src/cmd/ksh93/README: - Update compile-time options docuemntation. - Update build instructions. - Remove obsolete stuff. src/cmd/ksh93/SHOPT.sh: - Remove unused SHOPT_SEVENBIT option. A search in ast-open-history shows it was removed from include/edit.h on 2001-10-31. You can still get its effect by changing STRIP from 0377 to 0177 there.
This commit is contained in:
parent
7954855f21
commit
fdc08b239b
2 changed files with 93 additions and 66 deletions
|
@ -14,60 +14,89 @@ ksh language more compatible with other shells by following the POSIX
|
||||||
standard more closely. See the manual page for details. It is enabled by
|
standard more closely. See the manual page for details. It is enabled by
|
||||||
default if ksh is invoked as sh, otherwise it is disabled by default.
|
default if ksh is invoked as sh, otherwise it is disabled by default.
|
||||||
|
|
||||||
The Makefile file contains several compilation options that can be set
|
The SHOPT.sh file contains several compilation options that can be set
|
||||||
before compiling ksh. Options are of the form SHOPT_option and become
|
before compiling ksh. Options are of the form SHOPT_option and become
|
||||||
#define inside the code. These options are set to their recommended
|
#define inside the code. These options are set to their recommended
|
||||||
value and some of these may disappear as options in future releases.
|
value and some of these may disappear as options in future releases.
|
||||||
A value of 0, or no value represents off, 1 represents on.
|
A value of 0 represents off, 1 represents on, no value means probe. For
|
||||||
Note that == is needed, not =, because these are nmake state variables
|
options where no feature probe is available, probe is the same as off.
|
||||||
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:
|
The options have the following defaults and meanings:
|
||||||
|
2DMATCH on Two-dimensional ${.sh.match} for ${var//pat/str}.
|
||||||
ACCT off Shell accounting.
|
ACCT off Shell accounting.
|
||||||
ACCTFILE off Enable per user accounting info.
|
ACCTFILE off Enable per user accounting info.
|
||||||
AUDIT off For auditing specific users
|
AUDIT off For auditing specific users
|
||||||
AUDITFILE "/etc/ksh_audit"
|
AUDITFILE "/etc/ksh_audit"
|
||||||
APPEND on Allows var+=val string and array append.
|
BGX on Enables background job extensions. Noted by "J" in the
|
||||||
BASH off Bash compatibility mode. It is not fully implemented
|
version string when enabled. (1) JOBMAX=n limits the
|
||||||
and is experimental.
|
number of concurrent background jobs to n; the (n+1)th
|
||||||
|
background job will block until a running background job
|
||||||
|
completes. (2) SIGCHLD traps are queued so that each
|
||||||
|
completing background job gets its own trap; $! is set to
|
||||||
|
the job pid and $? is set to the job exit status at the
|
||||||
|
beginning of the trap.
|
||||||
BRACEPAT on C-shell type abc{d,e}f style file generation
|
BRACEPAT on C-shell type abc{d,e}f style file generation
|
||||||
CMDLIB_BLTIN off Makes all commands in libcmd.a builtins. The
|
CMDLIB_HDR "<cmdlist.h>"
|
||||||
SH_CMDLIB_DIR nmake state variable can be used to
|
The header in which yuo can provide a custom list of
|
||||||
specify a directory.
|
libcmd commands to provide as path-bound built-ins.
|
||||||
CMDLIB_DIR off Sets CMDLIB_BLTIN=1 and provides a default value
|
CMDLIB_DIR "\"/opt/ast/bin\""
|
||||||
of "/opt/ast/bin" for SH_CMDLIB_DIR.
|
The default virtual directory prefix for path-bound
|
||||||
COMPOUND_ARRAY
|
built-ins. The value must include double quotes.
|
||||||
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.
|
CRNL off <cr><nl> treated as <nl> in shell grammar.
|
||||||
|
DEVFD Use the more secure /dev/fd mechanism instead of FIFOs for
|
||||||
|
proces substitutions. On by default on OSs with /dev/fd.
|
||||||
DYNAMIC on Dynamic loading of builtins. (Requires dlopen() interface.)
|
DYNAMIC on Dynamic loading of builtins. (Requires dlopen() interface.)
|
||||||
ECHOPRINT off Make echo equivalent to print.
|
ECHOPRINT off Make echo equivalent to print.
|
||||||
|
EDPREDICT on Enables predictive editing. As you type a line beginning
|
||||||
|
with a #, the following characters are treated as a shell
|
||||||
|
pattern and cause matching lines from the history file to
|
||||||
|
be displayed as a numbered list as you type. You can
|
||||||
|
scroll up and down this list or you can use <ESC>nTAB to
|
||||||
|
make this the current line (n defaults to 1 if omitted).
|
||||||
ESH on Compile with emacs command line editing. The original
|
ESH on Compile with emacs command line editing. The original
|
||||||
emacs line editor code was provided by Mike Veach at IH.
|
emacs line editor code was provided by Mike Veach at IH.
|
||||||
FILESCAN on Experimental option that allows fast reading of files
|
FILESCAN on Experimental option that allows fast reading of files
|
||||||
using while < file;do ...; done and allowing fields in
|
using while < file;do ...; done and allowing fields in
|
||||||
each line to be accessed as positional parameters.
|
each line to be accessed as positional parameters.
|
||||||
KIA off Allow generation of shell cross reference database with -I.
|
FIXEDARRAY on When using typeset, a name in the format NAME[N]
|
||||||
|
creates a fixed-size array and any attempt to access a
|
||||||
|
subscript N or higher is an error. Multidimensional
|
||||||
|
fixed-size arrays NAME[N1][N2]... are also supported.
|
||||||
|
GLOBCASEDET Adds the 'globcasedetect' shell option. When this shell
|
||||||
|
option is turned on, file name generation (globbing)
|
||||||
|
and file name listing and completion automatically become
|
||||||
|
case-insensitive on file systems where the difference
|
||||||
|
between upper- and lowercase is ignored for file names.
|
||||||
|
This compile-time option is enabled by default on operating
|
||||||
|
systems that can support case-insensitive file systems.
|
||||||
|
HISTEXPAND on Enable !-style history expansion similar to csh(1).
|
||||||
|
KIA off Allow generation of shell cross reference database with -R.
|
||||||
MULTIBYTE on Multibyte character handling. Requires mblen() and
|
MULTIBYTE on Multibyte character handling. Requires mblen() and
|
||||||
mbctowc().
|
mbctowc().
|
||||||
NAMESPACE on Allows namespaces. This is experimental, incomplete
|
NAMESPACE on Allows namespaces. This is experimental, incomplete
|
||||||
and undocumented.
|
and undocumented.
|
||||||
|
NOECHOE off Disable the '-e' option to the 'echo' command,
|
||||||
|
unless SHOPT_ECHOPRINT is enabled.
|
||||||
OLDTERMIO off Use either termios or termio at runtime.
|
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.
|
OPTIMIZE on Optimize loop invariants for with for and while loops.
|
||||||
|
PFSH off Compile with support for profile shell. (Solaris; obsolete)
|
||||||
P_SUID off If set, all real uids, greater than or equal to this
|
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.
|
value will require the -p flag to run suid/sgid scripts.
|
||||||
PFSH off Compile with support for profile shell.
|
RAWONLY on Turn on if the vi line mode doesn't work right unless
|
||||||
RAWONLY off Turn on if the vi line mode doesn't work right unless
|
|
||||||
you do a set -o viraw.
|
you do a set -o viraw.
|
||||||
SEVENBIT off Strip the eighth bit from characters.
|
REGRESS off Enable the __regress__ built-in command and instrumented
|
||||||
SPAWN off Use spawn as combined fork/exec. May improve speed on
|
intercepts for testing.
|
||||||
some systems.
|
REMOTE off Set --rc (read profile scripts) even if ksh was invoked
|
||||||
|
with standard input on a socket, i.e. as a remote shell.
|
||||||
|
SPAWN on Use posix_spawn(3) as combined fork/exec if job control
|
||||||
|
is not active. Improves speed.
|
||||||
STATS on Add .sh.stats compound variable.
|
STATS on Add .sh.stats compound variable.
|
||||||
SUID_EXEC on Execute /etc/suid_exec for setuid, setgid script.
|
SUID_EXEC on Execute /etc/suid_exec for setuid, setgid script.
|
||||||
|
SYSRC Source /etc/ksh.kshrc on initializing an interactive
|
||||||
|
shell. This is on by default if /etc/ksh.kshrc or
|
||||||
|
/etc/bash.bashrc exists at compile time.
|
||||||
|
TEST_L Add 'test -l' as an alias for 'test -L'. This is on by
|
||||||
|
default if the OS's external 'test' command supports it.
|
||||||
TIMEOUT off Set this to the number of seconds for timing out and
|
TIMEOUT off Set this to the number of seconds for timing out and
|
||||||
exiting the shell when you don't enter a command. If
|
exiting the shell when you don't enter a command. If
|
||||||
non-zero, TMOUT can not be set larger than this value.
|
non-zero, TMOUT can not be set larger than this value.
|
||||||
|
@ -75,30 +104,48 @@ The options have the following defaults and meanings:
|
||||||
VSH on Compile with vi command line editing. The original vi
|
VSH on Compile with vi command line editing. The original vi
|
||||||
line editor code was provided by Pat Sullivan at CB.
|
line editor code was provided by Pat Sullivan at CB.
|
||||||
|
|
||||||
The following compile options are set automatically by the feature testing:
|
To build ksh (as well as libcmd and libast libraries on which ksh depends),
|
||||||
DEVFD Set when /dev/fd is a directory that names open files.
|
cd to the top directory and run:
|
||||||
SHELLMAGIC
|
|
||||||
Set on systems that recognize script beginning with #! specially.
|
|
||||||
|
|
||||||
|
bin/package make
|
||||||
|
|
||||||
In most instances, you will generate ksh from a higher level directory
|
The compiled binaries are stored in the arch directory, in a subdirectory
|
||||||
which also generates libcmd and libast libraries on which ksh depends.
|
that corresponds to your architecture. The command 'bin/package host type'
|
||||||
However, it is possible to generate ksh, with by running make -f ksh.mk
|
outputs the name of this subdirectory.
|
||||||
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
|
If you have trouble or want to tune the binaries, you may pass additional
|
||||||
libraries, then you should define the variables mam_cc_static and
|
compiler and linker flags. It is usually best to export these as environment
|
||||||
mam_cc_dynanamic as the compiler options that request static linking
|
variables before running bin/package as they could change the name of the
|
||||||
and dynamic linking respectively. This will decrease the number of
|
build subdirectory of the arch directory, so exporting them is a convenient
|
||||||
shared libraries that ksh need and cut startup time substantially.
|
way to keep them consistent between build and test commands. Note that this
|
||||||
|
system uses CCFLAGS instead of the usual CFLAGS. An example that makes
|
||||||
|
Solaris Studio cc produce a 64-bit binary:
|
||||||
|
|
||||||
The makefile should also generate shcomp, a program that will precompile
|
export CCFLAGS="-xc99 -m64 -O" LDFLAGS="-m64"
|
||||||
|
bin/package make
|
||||||
|
|
||||||
|
Alternatively you can append these to the command, and they will only be
|
||||||
|
used for that command. You can also specify an alternative shell in which to
|
||||||
|
run the build scripts this way. For example:
|
||||||
|
|
||||||
|
bin/package make SHELL=/bin/bash CCFLAGS="-O2 -I/opt/local/include" \
|
||||||
|
LDFLAGS="-L/opt/local/lib"
|
||||||
|
|
||||||
|
For more information, run:
|
||||||
|
|
||||||
|
bin/package help
|
||||||
|
|
||||||
|
Many other commands in this repo self-document via the --help, --man and
|
||||||
|
--html options; those that do have no separate manual page.
|
||||||
|
|
||||||
|
Automated installation is not supported. To install manually:
|
||||||
|
|
||||||
|
cp arch/$(bin/package host type)/bin/ksh /usr/local/bin/
|
||||||
|
cp src/cmd/ksh93/sh.1 /usr/local/share/man/man1/ksh.1
|
||||||
|
|
||||||
|
(adapting the destination directories as required).
|
||||||
|
|
||||||
|
The build should also generate shcomp, a program that will precompile
|
||||||
a script. ksh93 is able to recognize files in this format and process
|
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
|
them as scripts. You can use shcomp to send out scripts when you
|
||||||
don't want to give away the original script source.
|
don't want to give away the original script source.
|
||||||
|
@ -137,25 +184,6 @@ COMPATIBILITY contains a list of incompatibilities with ksh-88. The
|
||||||
file bltins.mm is a draft troff (mm) memo describing how to write
|
file bltins.mm is a draft troff (mm) memo describing how to write
|
||||||
built-in commands that can be loaded at run time.
|
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:
|
Please report any problems or suggestions to:
|
||||||
|
|
||||||
https://github.com/ksh93/ksh
|
https://github.com/ksh93/ksh
|
||||||
|
|
|
@ -33,7 +33,6 @@ SHOPT P_SUID= # real uid's that require -p for set[ug]id (do not set to 0 to
|
||||||
SHOPT RAWONLY=1 # make viraw the only vi mode
|
SHOPT RAWONLY=1 # make viraw the only vi mode
|
||||||
SHOPT REGRESS= # enable __regress__ builtin and instrumented intercepts for testing
|
SHOPT REGRESS= # enable __regress__ builtin and instrumented intercepts for testing
|
||||||
SHOPT REMOTE= # enable --rc if running as a remote shell
|
SHOPT REMOTE= # enable --rc if running as a remote shell
|
||||||
SHOPT SEVENBIT= # strip the eighth bit from characters
|
|
||||||
SHOPT SPAWN= # use spawnveg for fork/exec
|
SHOPT SPAWN= # use spawnveg for fork/exec
|
||||||
SHOPT STATS=1 # add .sh.stats variable
|
SHOPT STATS=1 # add .sh.stats variable
|
||||||
SHOPT SUID_EXEC=1 # allow (safe) suid/sgid shell scripts
|
SHOPT SUID_EXEC=1 # allow (safe) suid/sgid shell scripts
|
||||||
|
|
Loading…
Reference in a new issue