O pushd sempre envia push para o diretório atual?

O pushd sempre envia push para o diretório atual?
$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1

Parece que pushdsempre coloca o diretório atual, por exemplo, /tmp/d1na pilha, embora eu o execute como pushd ../d2?

Observe que:http://linux.101hacks.com/cd-command/dirs-pushd-popd/

O primeiro diretório da saída do comando dir é sempre o diretório atual e não o conteúdo da pilha.

Responder1

Não pushdnem sempre envia o diretório atual. Da página bash' man:

   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.

O formulário com um diretório pushd [dir]não está usando o diretório atual, a menos que esse diretório seja explicitamente usado como argumento. Fazendopushd somedir

Responder2

Estou usando zshe tem uma opção PUSHD_IGNORE_DUPS: "Não envie várias cópias do mesmo diretório para a pilha de diretórios". Talvez seja necessário verificar as opções do shell (pois zsheu precisava unsetopt pushdignoredups).

informação relacionada