pushd [ -sLP ] [ arg ]
pushd [ -sLP ] old new
pushd [ -sLP ] {+|-}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.  Otherwise, arg is interpreted
       as it would be by cd.  The meaning of old  and  new
       in the second form is also the same as for cd.

       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,  start-
       ing 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.

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

       The options -s, -L and -P have the same meanings as
       for the cd builtin.
