pushd [ arg ]
pushd old new
pushd {+|-}n
       Change the current directory, and push the old cur-
       rent  directory  onto  the directory stack.  In the
       first form, change the current  directory  to  arg.
       If  arg  is  not  specified,  change  to the second
       directory on the stack (that is, exchange  the  top
       two   entries),   or   change   to   $HOME  if  the
       PUSHD TO HOME option is set or if there is only one
       entry on the stack.

       If  arg  is  `-',  change  to $OLDPWD, the previous
       directory.  If a directory named arg is  not  found
       in the current directory and arg does not contain a
       slash, search each component of the shell parameter
       cdpath.   If  the  option CDABLE VARS is set, and a
       parameter named arg exists whose value begins  with
       a slash, treat its value as the directory.

       If  the  option PUSHD SILENT is not set, the direc-
       tory stack will be printed after a  pushd  is  per-
       formed.

       The second form of pushd substitutes the string new
       for the string old  in  the  name  of  the  current
       directory,  and  tries to change to this new direc-
       tory.

       The third form of pushd changes directory by rotat-
       ing  the  directory  list.  An argument of the form
       `+n' identifies a stack entry by counting from  the
       left  of  the  list  shown  by  the  dirs  command,

       starting with zero.  An argument of the  form  `-n'
       counts  from  the right.  If the PUSHD MINUS option
       is set, the meanings of `+' and `-' in this context
       are swapped.
