INCOMPATIBLITIES BETWEEN ksh93s- and Solaris /usr/bin/ksh Of these incompatibilities, the more serious are: #1, #4, #5, #8, #9, #10, #13, and possibly #6. 1) In Solaris ksh, in both POSIX-style functions, declared as "func()" and in non-POSIX-style functions, declared as "function func", variables can be declared local to that function and all functions it calls using the typeset special command, e.g., "typeset var". In ksh93, local variables only exist for non-POSIX-style (function func) functions. In POSIX-style functions (func()), variables declared with "typeset var" remain global in scope, and are shared between the calling program and the function. 2) In Solaris ksh, "alias -x" lists the exported aliases. In ksh93, alias -x exits 0 and outputs nothing. However in Solaris ksh, exported aliases do not work any differently than non-exported aliases. 3) In Solaris ksh, a dollar sign ($') followed by a single quote is interpreted literally. In ksh93, you must escape the dollar sign to get the previous behavior. Similarly, the dollar sign ($") preceding a double quote in Solaris ksh must be escaped. In ksh93, a $"..." string indicates a string to be translated for locales other than C or POSIX. Example: In Solaris ksh: In ksh93: % echo $'foo' % echo $'foo' $foo foo % echo $"foo" % echo $"foo" $foo foo % echo \$'foo' % echo \$'foo' $foo $foo % echo \$"foo" % echo \$"foo" $foo $foo 4) In Solaris ksh, the exit status of a command that terminated because it received a signal is 128+. In ksh93, it is 256+. Users should therefore not be relying on specific exit values, other than 0 for success or non-zero otherwise. 5) New built-ins in ksh93. ksh93 will include several built-ins which are not built-ins in Solaris ksh, and, if executed without a pathname prefix, may be run in place of the corresponding Solaris /usr/bin binaries on the path: printf sleep and these built-ins, which are executed if the corresponding /bin executable is found on the path before any other: cat chown head mkdir rmdir tee uniq wc Three known incompatibilities exist in the printf, mkdir, and uniq built-ins ksh93, which are based upon POSIX requirements. They are considered bugs, and it is expected that AT&T will fix these shortly before or after ksh93 integrates into Solaris. See builtin.bugs file for details. 6) Some built-ins don't allow options to be passed in any order as they did previously. One known case is "typeset -8i ", which no longer works the same as "typeset -i8 " to set an integer variable that is base 8. 7) The ENV variable in ksh93 is now evaluated for arithmetic expansions $(()) and command substitution `` In Solaris ksh, it is not. Previous uses of ` and $( as literal values in the ENV variable must be escaped with \. This won't be an issue for scripts, which do not execute the file pointed to by ENV. No problems are anticipated for this case. 8) The ERRNO variable has been dropped in ksh93. 9) In ksh93, pattern matching following a redirection symbol works only in interactive shell, not in scripts. 10) In ksh93, the original arguments ($1, $2, $3, etc.) to a script are restored after a dot script (.