ksh(1)

ksh(1)

If a command which is a tracked alias is executed, and a command with the same name is installed in a directory in the search path before the directory where the original command was found, the shell continues to load and execute the original command. Use the -toption of the alias command to correct this situation.

If you move the current directory or one above it, pwd may not give the correct response. Use the cd command with a full path name to correct this situation.

Some very old shell scripts contain a caret (Ã) as a synonym for the pipe character (). Note however, ksh does not recognize the caret as a pipe character.

If a command is piped into a shell command, all variables set in the shell command are lost when the command completes.

Using the fc built-in command within a compound command causes the entire command to disappear from the history ®le.

The built-in command . ®le reads the entire ®le before any commands are executed. Therefore, alias and unalias commands in the ®le do not apply to any functions de®ned in the ®le.

Traps are not processed while the shell is waiting for a foreground job. Thus, a trap on CHLD is not executed until the foreground job terminates.

The export built-in command does not handle arrays properly. Only the ®rst element of an array is exported to the environment.

Background processes started from a non-interactive shell cannot be accessed by using job control com- mands.

In an international environment, character ordering is determined by the setting of LC_COLLATE, rather than by the binary ordering of character values in the machine collating sequence. This brings with it certain attendant dangers, particularly when using range expressions in ®le name generation patterns. For example, the command,

rm [a-z]*

might be expected to match all ®le names beginning with a lowercase alphabetic character. However, if dictionary ordering is speci®ed by LC_COLLATE, it would also match ®le names beginning with an uppercase character (as well as those beginning with accented letters). Conversely, it would fail to match letters collated after z in languages such as Danish or Norwegian.

The correct (and safe) way to match speci®c character classes in an international environment is to use a pattern of the form:

rm [[:lower:]]*

This uses LC_CTYPE to determine character classes and works predictably for all supported languages and codesets. For shell scripts produced on non-internationalized systems (or without consideration for the above dangers), it is recommended that they be executed in a non-NLSenvironment. This requires that LANG, LC_COLLATE, etc., be set to "C" or not set at all.

Be aware that the value of the IFS variable in the user's environment affects the behavior of scripts.

ksh implements command substitution by creating a pipe between itself and the command. If the root ®le system is full, the substituted command cannot write to the pipe. As a result, the shell receives no input from the command, and the result of the substitution is null. In particular, using command substitution for variable assignment under such circumstances results in the variable being silently assigned a NULL value.

AUTHOR

ksh was developed by AT&T.

 

FILES

to ®nd home directories

/etc/passwd

/etc/profile

read to set up system environment

/etc/suid_profile

security pro®le

$HOME/.profile

read to set up user's custom environment

/tmp/sh

for here-documents

k

HP-UX Release 11i: December 2000

− 22 −

Section 1417