Path: csiph.com!au2pb.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!news.glorb.com!usenet.stanford.edu!not-for-mail From: Eduardo =?utf-8?Q?A=2E_Bustamante_L=C3=B3pez?= Newsgroups: gnu.bash.bug Subject: Inconsistency in the handling of variables inside a function when using a tempenv variable Date: Thu, 22 Oct 2015 17:34:49 -0500 Lines: 32 Approved: bug-bash@gnu.org Message-ID: NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: usenet.stanford.edu 1445553297 10854 208.118.235.17 (22 Oct 2015 22:34:57 GMT) X-Complaints-To: action@cs.stanford.edu To: bug-bash@gnu.org Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:mail-followup-to:mime-version :content-type:content-disposition:user-agent; bh=6HnrAHXs3abFP6bSDiikYNJO0gzoJK53AwIqZyTGYKk=; b=OTY0dzSNLBUTS5MVGEoW+GCB47/QLL/RP+ko+F2mpWxLHqoyr8hpR5o+1RCGL9uY4q FXKaoDWaVFKGUVlXFfQ3UzsTeFeFj+VVAA/h7p/4ZtS1861fGuOs5Xj4biUyj5+vf+cv lFD+XKd5Jxiip0zf4g1lKcsCs33g2qCM50V8MoPMAH8vk9AXzh+4tOX5iRJiJUE5FPzu +KUJUiLWBLTNsZnxXY5r8I9vWofaaSK86xpLXATTZf7EUCDNxNNkvpF3goledVG84y7Q Jd1XpdLSDQhJs9fJ2thrWJLD0JSr3geKENL1N6//Gzii8tsDBhs1pyDzVlyewhxhDio4 H2sA== X-Received: by 10.66.119.201 with SMTP id kw9mr20457808pab.64.1445553290649; Thu, 22 Oct 2015 15:34:50 -0700 (PDT) Mail-Followup-To: bug-bash@gnu.org Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c03::22e X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com gnu.bash.bug:11749 I found this some time ago, but didn't report it because I couldn't come up with a patch: dualbus@hp ~ % for sh in bash mksh zsh ksh93 dash; do $sh -c 't=${KSH_VERSION+typeset}; f() { x=3; ${t:-local} x; echo $x; }; [ "$(f)" = "$(x=4 f)" ]'; echo $sh $?; done bash 1 mksh 0 zsh 0 ksh93 0 dash 0 dualbus@hp ~ % bash -xc 'f() { x=3; local x; echo $x; }; f; x=4 f' + f + x=3 + local x + echo + x=4 + f + x=3 + local x + echo 3 3 I'm putting it here so I don't forget about it. Bash is the only one that handles this: tmpenv - global - local variable chain in that way. -- Eduardo Bustamante https://dualbus.me/