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.
