Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: BUG: cd '' doesn't produce an error
- X-seq: zsh-workers 22118
- From: Peter Stephenson <pws@xxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: BUG: cd '' doesn't produce an error
- Date: Wed, 4 Jan 2006 17:48:06 +0000
- In-reply-to: <EXCHANGE03jSFUMCGlb00000a49@xxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- Organization: Cambridge Silicon Radio
- References: <87zmmvxl3g.fsf@xxxxxxxxxxxxxxx> <20051221102159.44d9f5ca.pws@xxxxxxx> <877j9mycf9.fsf@xxxxxxxxxxxxxxx> <EXCHANGE03jSFUMCGlb00000a49@xxxxxxxxxxxxxxxxxx>
Peter Stephenson <pws@xxxxxxx> wrote:
> Otherwise [if the argument is not -], if a directory named arg
> is not found in the current directory and arg does not begin
> with a slash, search each component of the shell parameter
> cdpath.
>
> This isn't actually quite right, since if . is in $cdpath but not at
> the start it doesn't search . straight away. So at least the
> description needs improving (this isn't special to a null string).
Here's a first attempt...
Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.81
diff -u -r1.81 builtins.yo
--- Doc/Zsh/builtins.yo 7 Nov 2005 09:37:34 -0000 1.81
+++ Doc/Zsh/builtins.yo 4 Jan 2006 17:47:23 -0000
@@ -160,12 +160,22 @@
current directory to var(arg), or to the value of tt($HOME) if
var(arg) is not specified. If var(arg) is `tt(-)', change to the
value of tt($OLDPWD), the previous directory.
-Otherwise, if a directory named var(arg) is not found in the current
-directory and var(arg) does not begin with a slash, search each
-component of the shell parameter tt(cdpath). If no directory is found
-and the option tt(CDABLE_VARS) is set, and a parameter named var(arg)
-exists whose value begins with a slash, treat its value as the
-directory. In that case, the parameter is added to the named
+
+Otherwise, if var(arg) begins with a slash, attempt to change to the
+director given by var(arg).
+
+If var(arg) does not begin with a slash, the behaviour depends on whether
+the current directory `tt(.)' occurs in the list of directories contained
+in the shell parameter tt(cdpath). If it does not, first attempt to change
+to the directory var(arg) under the current directory, and if that fails
+but tt(cdpath) is set and contains at least one element attempt to change
+to the directory var(arg) under each component of tt(cdpath) in turn until
+successful. If `tt(.)' occurs in tt(cdpath), then tt(cdpath) is searched
+strictly in order so that `tt(.)' is only tried at the appropriate point.
+
+If no directory is found, the option tt(CDABLE_VARS) is set, and a
+parameter named var(arg) exists whose value begins with a slash, treat its
+value as the directory. In that case, the parameter is added to the named
directory hash table.
The second form of tt(cd) substitutes the string var(new)
--
Peter Stephenson <pws@xxxxxxx> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070
Your mail client is unable to display the latest news from CSR. To access our news copy this link into a web browser: http://www.csr.com/email_sig.html
Messages sorted by:
Reverse Date,
Date,
Thread,
Author