$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1
Parece que pushd
siempre empuja el directorio actual, por ejemplo, /tmp/d1
a 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, pushd
no siempre envía el directorio actual. De bash
la man
pá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 zsh
y 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 zsh
lo necesitaba unsetopt pushdignoredups
).