From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19039 invoked by alias); 13 Jan 2017 15:20:11 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 40349 Received: (qmail 9116 invoked from network); 13 Jan 2017 15:20:11 -0000 X-Qmail-Scanner-Diagnostics: from mailout4.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.14):SA:0(-8.2/5.0):. Processed in 1.182817 secs); 13 Jan 2017 15:20:11 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-8.2 required=5.0 tests=RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at samsung.com does not designate permitted sender hosts) X-AuditID: cbfec7ef-f79d26d00000420c-6e-5878f014f952 Date: Fri, 13 Jan 2017 15:19:37 +0000 From: Peter Stephenson To: Zsh Hackers' List Subject: Re: `exec env -i OLDPWD=$OLDPWD zsh` doesn't work Message-id: <20170113151937.5df66376@pwslap01u.europe.root.pri> In-reply-to: <20170113145919.GB4363@fujitsu.shahaf.local2> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFIsWRmVeSWpSXmKPExsWy7djP87qiHyoiDPYtZ7I42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGTt/GhV08VRc77nK2sB4mbOLkZNDQsBEYsb/S+wQtpjEhXvr 2boYuTiEBJYxSjQ+ucwC4fQySVz6do0NpmPp2muscFVLDq2AcqYxSaye2ALlnGGUmNTexQTh nGWUONezirGLkYODRUBV4shfNZBRbAKGElM3zQYLiwhoS7R/FAMxhQWsJHZvDwSp4BWwl2jb 3c8MYnMChedsOQd2Kr+AvsTVv5+YIA6yl5h55QwjRL2gxI/J91hAbGYBHYlt2x6zQ9jyEpvX vGUGuUZCoJldYveKlUwguyQEZCU2HWCGmOMicXb9NkYIW1ji1fEt0GCRkejsOAi1q59R4km3 L8ScGYwSp8/sgIaKtUTf7YuMEMv4JCZtm84MMZ9XoqNNCKLEQ2Lb58tQMx0l+uZ2sU1gVJyF 5OxZSM6eheTsBYzMqxhFUkuLc9NTiw31ihNzi0vz0vWS83M3MQJTwOl/x9/vYHzaHHKIUYCD UYmHd8Lt8ggh1sSy4srcQ4wSHMxKIrzf3lVECPGmJFZWpRblxxeV5qQWH2KU5mBREufdu+BK uJBAemJJanZqakFqEUyWiYNTqoFxPdfJitSn8jYySXO1N/s9dtv8Z1oJi6Jh4oX4+TeuzBMu 69EQdn7O0rM+TuDijY9tb+X7N1kn7Jqzzs6y6XTsA9HYW7lnF7wp+hxSmtggYOd7wG7x0bvT ny9jE4zQmVG7p9DW8c9JLw6v49oOqrvzPv76oP/piWnqbakIZbZZDlum9C+Z/T1FiaU4I9FQ i7moOBEAMdHXnv0CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrEIsWRmVeSWpSXmKPExsVy+t/xa7ruHyoiDKa2SlgcbH7I5MDoserg B6YAxig3m4zUxJTUIoXUvOT8lMy8dFul0BA3XQslhbzE3FRbpQhd35AgJYWyxJxSIM/IAA04 OAe4Byvp2yW4Zez8aVTQxVNxvecqawPjZc4uRk4OCQETiaVrr7FC2GISF+6tZ+ti5OIQEljC KDHh/25GCGcGk8SEt1PYQKqEBM4xSryeFw6ROMsocfb1DKYuRg4OFgFViSN/1UBq2AQMJaZu ms0IEhYR0JZo/ygGYgoLWEns3h4IUsErYC/RtrufGcTmBArP2XKOHWLiH0aJxhNdYKv4BfQl rv79xARxnL3EzCtnGCGaBSV+TL7HAmIzC2hJbN7WxAphy0tsXvOWGeJMdYkbd3ezT2AUnoWk ZRaSlllIWhYwMq9iFEktLc5Nzy021CtOzC0uzUvXS87P3cQIjJ9tx35u3sF4aWPwIUYBDkYl Ht4Jt8sjhFgTy4orcw8xSnAwK4nwfntXESHEm5JYWZValB9fVJqTWnyI0RQYLBOZpUST84Gx nVcSb2hiaG5paGRsYWFuZKQkzlvy4Uq4kEB6YklqdmpqQWoRTB8TB6dUA6MJ03X5idZ/dZ9L 3Pm91qiSPd6NcdaXz36TvulPEYrNDsvq+u/Pfrv+zV+B+VrWe79+Ou9uvpd9+pqL123SbFty tdRVg59zLuf+H7Rq2gcnvknS+yaeW7PU9PWqkxNE3mo9Fa7Y2d78QuPy7TmF+lskzpw+t3tu VIPM87dC54MmmhececQ5bfc/JZbijERDLeai4kQAGLD6SrUCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170113151945eucas1p1d0e97ebb6490653c0c86791a5b4cecd4 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170113150404epcas4p2b15a4b2d8af580d4b38d8c69e13737a7 X-RootMTR: 20170113150404epcas4p2b15a4b2d8af580d4b38d8c69e13737a7 References: <20170113145919.GB4363@fujitsu.shahaf.local2> (This bit moved to zsh-workers.) OLDPWD seems to be slightly weirdly implemented at the moment. There's an internal variable storing it, but that's not explicitly tied to a shell variable; instead when the internal variable gets changed the shell variable also gets changed. So the internal variable isn't changed if you change the shell variable, which there's nothing stopping you doing, i.e. you may look at $OLDPWD and think that's where you're about to change to whereas ~- will actually take you somewhere else. This also means that where the code says (at initialisation) oldpwd = ztrdup(pwd); /* initialize `OLDPWD' = `PWD' */ it doesn't do anything of the kind, because OLDPWD is only ever set on a cd, as far as I can see. It does change what ~- will do, however. Because OLDPWD isn't actually managed the way you expect, there's a kludge when changing directories that if the variable's the wrong type it's simply unset and made non-readonly --- except it isn't made non-readonly if it was already scalar but readonly. This all seems a bit substandard, not to say amateurish. It might be down to a desire to keep OLDPWD from being special --- but that doesn't work because it's use when changing directory is unconditional, and unless you never change directory you can't do anything else with it. So as far as I can see it could just as well be a proper special variable tied to the internal one, for which there's already an API. There may be some history I've forgotten about. pws