¿Pushd siempre envía el directorio actual?

¿Pushd siempre envía el directorio actual?
$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1

Parece que pushdsiempre empuja el directorio actual, por ejemplo, /tmp/d1a la pila, aunque lo ejecuto como pushd ../d2?

Tenga en cuenta que:http://linux.101hacks.com/cd-command/dirs-pushd-popd/

El primer directorio de la salida del comando dir es siempre el directorio actual y no el contenido de la pila.

Respuesta1

No, pushdno siempre envía el directorio actual. De bashla manpágina:

   pushd [-n] [+n] [-n]
   pushd [-n] [dir]
          Adds  a directory to the top of the directory stack, or rotates
          the stack, making the new top of the stack the current  working
          directory.   With  no arguments, exchanges the top two directo‐
          ries and returns 0, unless the directory stack is empty.
          .
          .
          dir    Adds  dir  to  the directory stack at the top, making it
                 the new current working directory.

El formulario con un directorio pushd [dir]no utiliza el directorio actual a menos que ese directorio se utilice explícitamente como argumento. Haciendopushd somedir

Respuesta2

Lo estoy usando zshy tiene una opción PUSHD_IGNORE_DUPS: "No coloque varias copias del mismo directorio en la pila de directorios". Es posible que deba verificar las opciones de Shell (porque zshlo necesitaba unsetopt pushdignoredups).

información relacionada