pushd [ -qsLP ] [ arg ]
pushd [ -qsLP ] old new
pushd [ -qsLP ] {+|-}n
       Change the current directory, and push  the  old  current  directory
       onto the directory stack.  In the first form, change the current di-
       rectory  to  arg.  If arg is not specified, change to the second di-
       rectory 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 rotating 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 -q (quiet) option is specified, the hook function  chpwd  and
       the  functions in the array $chpwd_functions are not called, and the
       new directory stack is not printed.  This is  useful  for  calls  to
       pushd  that  do  not  change  the environment seen by an interactive
       user.

       If the option -q is not specified and the shell option  PUSHD_SILENT
       is  not  set,  the  directory stack will be printed after a pushd is
       performed.

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