cc: [email protected]
Subject: Re: [ast-users] ksh: `typeset -r var' sets `var' to Null if it is an  
exported parameter from a parent shell
--------

> I stumbled over this behavior:
> 
>  from another shell (tcsh in my case) call ksh after first exporting some  
> parameter from tcsh, i.e. in a running tcsh do
> 
> % setenv a 123
> % ksh
> 
> within the called ksh one gets of course
> 
> echo $a # -> 123
> 
> but after
> 
> typeset -r a
> 
> one gets
> 
> echo $a  # -> Null.
> 
> 
> I suspect the `typeset -r a' somehow masks the exported parameter of the  
> same name which is such lost forever within the running ksh?
> 
> question 1: is this behavior intentional? in bash and zsh `a' maintains  
> its original value, which is what I would have expected in ksh, too.
> 
> question 2: what is the best way for testing whether a parameter is  
> readonly? I came up with
> 
> s=$(typeset -r)
> ([[ -z "$s" ]] || [[ -n "${s/@(*$'\na'|a)=*}" ]]) && typeset -r a=$a
> 
> (which checks if there are any readonlys at all and if so if parameter `a'  
> is actually part of them)
> in order to enforce a readonly parameter with the original value. seems to  
> be correct but is probably way too complicated.
> 
> thanks
> joerg
> 
> ps: oberved with 93u.
> 

I was able to reproduce this with ksh93u but not with ksh93u+ which should
be available shortly.  Therefore, it is fixed in ksh93u+.

David Korn
[email protected]
_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to