From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7009 invoked from network); 10 Jun 2002 17:53:39 -0000 Received: from sunsite.dk (130.225.247.90) by ns1.primenet.com.au with SMTP; 10 Jun 2002 17:53:39 -0000 Received: (qmail 17171 invoked by alias); 10 Jun 2002 17:53:03 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 17311 Received: (qmail 17151 invoked from network); 10 Jun 2002 17:52:59 -0000 Date: Mon, 10 Jun 2002 13:52:56 -0400 From: Steve Simmons To: zsh-workers@sunsite.dk Subject: Possible zsh bug with unique tied vars in 4.0.4? Message-ID: <20020610175255.GA10947@ans.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.27i The following sequence of commands shows unexpected performance in zsh when using tied variables and unique processing. In brief, if you have tied variables FOO and foo and typeset one of them to unique (-U), you can use the other to assign non-unique values to the first. This is counter-intuitive at best :-), and I can see no use for this feature. The manual page leads one strongly to believe that a single variable is created which simply has two names and two presentations; the experiment below shows that clearly there are other differences as well. In most cases this wouldn't matter as I would declare such variables with $ typeset -Tx -U FOO foo However, when applying -U to useful special vars like PATH you cannot redeclare the overall type, nor can you simply do $ typeset -U PATH as that leads to the anomalous performance as shown below. One must set uniqueness on both forms; $ typeset -U PATH $ typeset -U path otherwise $PATH and $path start getting out of sync. This lack of tieing of secondary variable characteristics may apply to other items as well (justification, etc); I've not experimented. I'm running zsh version 4.0.4 on FreeBDS 4.6 RC2. Steve superior$ typeset -Tx FOO foo superior$ echo $FOO superior$ echo $foo superior$ FOO="a:b" superior$ echo $FOO a:b superior$ echo $foo a b superior$ foo=($foo a c) superior$ echo $foo a b a c superior$ echo $FOO a:b:a:c superior$ typeset -U foo superior$ echo $foo a b c superior$ echo $FOO a:b:c superior$ FOO="a:c:$FOO" superior$ echo $FOO a:c:a:b:c superior$ echo $foo a c a b c superior$ foo=($foo) superior$ echo $foo a c b superior$ echo $FOO a:c:b superior$ echo $ZSH_VERSION 4.0.4 superior$ uname -a FreeBSD superior.inland-sea.com 4.6-RC FreeBSD 4.6-RC #8: Fri Jun 7 21:27:23 EDT 2002 root@superior.inland-sea.com:/usr/src/sys/compile/SUPERIOR i386