COMPATIBILITY revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe KSH-93 VS. KSH-88
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeThe following is a list of known incompatibilities between ksh-93 and ksh-88.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeI have not include cases that are clearly bugs in ksh-88. I also have
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipeomitted features that are completely upward compatible.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe1. Functions, defined with name() with ksh-93 are compatible with
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac the POSIX standard, not with ksh-88. No local variables are
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac permitted, and there is no separate scope. Functions defined
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe with the function name syntax, maintain compatibility.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe This also affects function traces.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe2. ! is now a reserved word. As a result, any command by that
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac name will no longer work with ksh-93.
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac3. The -x attribute of alias and typeset -f is no longer
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac effective and the ENV file is only read for interactive
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe shells. You need to use FPATH to make function definitions
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe visible to scripts.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe4. A built-in command named command has been added which is
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe always found before the PATH search. Any script which uses
a3d3ab94806056d2355afea6fe8daac41059b9fbludovicp this name as the name of a command (or function) will not
0f8553e2af5fc49a510ecfcfc93e66d06713f631ludo be compatible.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe5. The output format for some built-ins has changed. In particular
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe the output format for set, typeset and alias now have single
0f8553e2af5fc49a510ecfcfc93e66d06713f631ludo quotes around values that have special characters. The output
0f8553e2af5fc49a510ecfcfc93e66d06713f631ludo for trap without arguments has a format that can be used as input.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara6. With ksh-88, a dollar sign ($') followed by a single quote was
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara interpreted literally. Now it is an ANSI-C string. You
266c5071a91fda6a5159b08ea8d45261228d03d5neil_a_wilson must quote the dollar sign to get the previous behavior.
4edb61f8b0f8ce9f62d803c706612376498672b4al_xipe Also, a $ in front of a " indicates that the string needs
9da44d3de0a7180285a77b7e8d2426a72aca249ejvergara to be translated for locales other than C or POSIX. The $
to on standard output as required by X/Open. With ksh-88,
28. In emacs/gmacs mode, control-v will not display the version when