From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6336 invoked by alias); 2 Apr 2012 11:07:58 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 16953 Received: (qmail 2883 invoked from network); 2 Apr 2012 11:07:52 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at vinc17.net does not designate permitted sender hosts) Date: Mon, 2 Apr 2012 13:07:46 +0200 From: Vincent Lefevre To: Mikael Magnusson Cc: Richard Hartmann , Bart Schaefer , zsh-users@zsh.org Subject: Re: `cd .` in non-existent directory leads into weird corner case Message-ID: <20120402110746.GD4925@xvii.vinc17.org> Mail-Followup-To: Mikael Magnusson , Richard Hartmann , Bart Schaefer , zsh-users@zsh.org References: <120327073414.ZM6783@torch.brasslantern.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Mailer-Info: http://www.vinc17.net/mutt/ User-Agent: Mutt/1.5.21-6201-vl-r48020 (2011-12-20) On 2012-04-02 12:15:59 +0200, Mikael Magnusson wrote: > On 2 April 2012 11:52, Richard Hartmann wrote: > > On Tue, Mar 27, 2012 at 16:34, Bart Schaefer wrote: > > > >> However, I've always been a little puzzled about the decision to set > >> $PWD to "." in this case. Bash remembers the relative location: > > > > Just to make sure this does not get lost, do we agree that not > > changing $PWD to a literal dot would make sense? Escalating the ENOENT > > to the user is probably the best approach. > > Weird, when I try making a directory and remove it, I can still cd .. > to the parent... I can even cd into the dir with another shell (via > /proc/$$/cwd), and cd .. to the correct parent dir from that other > shell. This seems to depend on the file system. The following script tst() { base=`pwd` echo "Test 1" mkdir dir cd dir rmdir ../dir pwd cd . pwd cd .. pwd cd "$base" echo "Test 2" mkdir dir cd dir rmdir ../dir pwd cd .. pwd } tst under NFS sometimes gives with zsh 4.3.12: Test 1 /home/vlefevre/dir tst:cd:9: no such file or directory: . /home/vlefevre/dir tst:cd:11: no such file or directory: .. /home/vlefevre/dir Test 2 /home/vlefevre/dir tst:cd:21: no such file or directory: .. /home/vlefevre/dir and sometimes: Test 1 /home/vlefevre/dir tst:cd:9: no such file or directory: . /home/vlefevre/dir tst:cd:11: no such file or directory: .. /home/vlefevre/dir Test 2 /home/vlefevre/dir /home/vlefevre and sometimes: Test 1 /home/vlefevre/dir . /home/vlefevre Test 2 /home/vlefevre/dir tst:cd:21: no such file or directory: .. /home/vlefevre/dir >>From /tmp, I always get: Test 1 /tmp/dir . /tmp Test 2 /tmp/dir /tmp With sh (dash): Test 1 /home/vlefevre/dir cd: 26: can't cd to . /home/vlefevre/dir /home/vlefevre Test 2 /home/vlefevre/dir /home/vlefevre and Test 1 /tmp/dir cd: 26: can't cd to . /tmp/dir /tmp Test 2 /tmp/dir /tmp respectively. With zsh in ksh emulation: Test 1 /home/vlefevre/dir tst:cd:9: no such file or directory: . /home/vlefevre/dir tst:cd:11: no such file or directory: .. /home/vlefevre/dir Test 2 /home/vlefevre/dir tst:cd:21: no such file or directory: .. /home/vlefevre/dir or Test 1 /home/vlefevre/dir . . Test 2 /home/vlefevre/dir /home/vlefevre -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)