Ted Unangst <t...@tedunangst.com> wrote:
 |On Thu, May 02, 2013 at 13:12, Steffen "Daode" Nurpmeso wrote:
 |> Hi, you should try
 |> 
 |> echo BEFORE
 |> unset KSH_VERSION
 |> echo AFTER
 |
 |ksh: unset: KSH_VERSION is read only
 |
 |So don't unset it?

Yep it's nasty hah.  Still, you get

  BEFORE
  ksh: unset: KSH_VERSION is read only

and .profile is read by an interactive shell, so evaluation must
not stop here, as has been revealed on the mksh(1) list -- POSIX
says (XCU, chapter 2: Shell Command Language):

  2.8.1 Consequences of Shell Errors
  For a non-interactive shell, an error condition encountered by
  a special built-in (see Special Built-In Utilities) or other type
  of utility shall cause the shell to write a diagnostic message to
  standard error and exit as shown in the following table:
  […]
  In all of the cases shown in the table, an interactive shell
  shall write a diagnostic message to standard error without
  exiting.

The shell doesn't exit, but it stops evaluation of the startup
file(s) instead of simply printing the error and setting $? to 1.
Buggy imho.

P.S.: thanks for CCing me, i've forgot that..

--steffen

Reply via email to