Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
cd bugs
- X-seq: zsh-workers 27149
- From: Eric Blake <ebb9@xxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: cd bugs
- Date: Tue, 14 Jul 2009 21:59:14 +0000 (UTC)
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- Sender: news <news@xxxxxxxxxxxxx>
POSIX requires cd to give output if a nonempty entry in CDPATH played a role, or
if 'cd -' was used. Therefore, this line demonstrates two zsh bugs:
$ zsh -c 'emulate -R sh; cd /tmp; mkdir -p d; CDPATH=.; cd d; cd -; rmdir d'
$ bash -c 'cd /tmp; mkdir -p d; CDPATH=.; cd d; cd -; rmdir d'
/tmp/d
/tmp
$
while bash was correct in printing the absolute name of d and its parent.
When fixing this, be sure that you don't break
$ zsh -c 'emulate -R sh; mkdir foo; CDPATH=:; cd foo'
since POSIX states that particular use must remain silent (an implicit . used
from an empty CDPATH entry is different than an explicit . in CDPATH).
Another bug, mainly visible on platforms like cygwin where leading // is special
as allowed by POSIX (in particular, on my cygwin machin, //eblake exists but not
/eblake):
$ zsh -c 'emulate -R sh; CDPATH=///; cd eblake; /bin/pwd'
//eblake
$ bash -c 'CDPATH=///; cd eblake; /bin/pwd'
bash: line 0: cd: eblake: No such file or directory
/tmp
$
Since POSIX requires ///eblake to be synonymous with /eblake, and /eblake does
not exist, only bash was correct in printing an error and not changing location.
--
Eric Blake
Messages sorted by:
Reverse Date,
Date,
Thread,
Author